STS相关接口 STS即Secure Token Service 是一种安全凭证服务,可以使用STS来完成对于临时用户的访问授权。对于跨用户短期访问对象存储资源时,可以使用STS服务。这样就不需要透露主账号AK/SK,只需要生成一个短期访问凭证给需要的用户使用即可,避免主账号AK/SK泄露带来的安全风险。 初始化STS服务 plaintext private const string AK " "; private const string SK " "; private const string ENDPOINT " "; // e.g. or private readonly AmazonSecurityTokenServiceClient stsClient; public S3ClientToCtyun() { var credentials new BasicAWSCredentials(AK, SK); var confSts new AmazonSecurityTokenServiceConfig { ServiceURL ENDPOINT }; this.stsClient new AmazonSecurityTokenServiceClient(credentials, confSts); } 获取临时token plaintext public void AssumeRole() { var bucket " "; var roleSessionName " "; var roleArn "arn:aws:iam:::role/xxxxxx"; var policy "{"Version":"20121017"," + ""Statement":" + "{"Effect":"Allow"," ""Action":["s3:"]," // 允许进行 S3 的所有操作。如果仅需要上传,这里可以设置为 PutObject ""Resource":["arn:aws:s3:::" + bucket + "","arn:aws:s3:::" + bucket + "/"]"// 允许操作默认桶中的所有文件,可以修改此处来保证操作的文件 "}}"; AssumeRoleRequest req new AssumeRoleRequest(); req.Policy policy; req.RoleArn roleArn; req.RoleSessionName roleSessionName; var task this.stsClient.AssumeRoleAsync(req); try { var result task.Result; Console.Out.WriteLine("AssumeRole, ak{0}, sk{1}, token{2}", result.Credentials.AccessKeyId, result.Credentials.SecretAccessKey, result.Credentials.SessionToken); } catch (Exception ex) { Console.Out.WriteLine("exception: {0}", ex.Message); } } 参数说明: 参数 类型 描述 是否必要 RoleArn String 角色的ARN,在控制台创建角色后可以查看 是 Policy String 角色的policy,需要是json格式,限制长度1~2048 是 RoleSessionName String 角色会话名称,此字段为用户自定义,限制长度2~64 是 DurationSeconds Integer 会话有效期时间,默认为3600s 否
来自: