繁体   English   中英

如何使用AWS STS在s3中为文件的特定资源创建只读和仅写令牌

[英]how to create read only and write only token for specific resource for a file in s3 using AWS STS

我必须为S3中的文件生成只读和只写令牌。

到目前为止我尝试过的是:

  1. 创建一个IAM角色,对参考中的存储区具有读写访问权限
  2. 创建一个STS客户端
  3. 承担由STS客户端在步骤#1中创建的IAM角色
  4. 使用sts客户端生成凭据

这是什么

  1. 允许用户使用令牌访问S3中的文件
  2. 但是此访问权限不限于只读或只写
  3. 同样,如果IAM角色有权访问更多存储桶,则令牌将访问所有存储桶

创建STS客户端

AWSSecurityTokenServiceClient sts_client = (AWSSecurityTokenServiceClient) AWSSecurityTokenServiceClientBuilder.standard()
                .withRegion(Regions.DEFAULT_REGION).build();

创建承担角色请求

AssumeRoleRequest assumeRoleRequest = new AssumeRoleRequest()
                .withRoleArn("arn:aws:iam::123456789123:role/iam-role-name")
                .withDurationSeconds(7200)
                .withRoleSessionName("session-role-"+System.currentTimeMillis());

生成令牌请求

GetSessionTokenRequest session_token_request = new GetSessionTokenRequest();

生成令牌

GetSessionTokenResult session_token_result = sts_client.getSessionToken(session_token_request);

创建凭证

Credentials session_creds = session_token_result.getCredentials();

创建基本凭证

BasicSessionCredentials sessionCredentials = new BasicSessionCredentials(
            session_creds.getAccessKeyId(),
            session_creds.getSecretAccessKey(),
            session_creds.getSessionToken());

期望

  1. 能够生成只读和只写令牌
  2. 能够生成特定于路径的令牌
  3. 令牌仅限于参考中的资源,而不限于IAM角色中附加的所有存储桶
be able to generate read only and write only tokens

您需要为只读和只写定义不同的角色。 恕我直言,您不能仅使用一个角色来构建用例。

be able to generate path specific tokens

该角色可以包括对特定S3密钥(文件名)的引用,例如:



{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": ["s3:Get*", "s3:List*"],
      "Resource": [
        "arn:aws:s3:::MyExampleBucket",
        "arn:aws:s3:::MyExampleBucket/mypath/myfile.txt"
      ]
    }
  ]
}

我找到了解决方案。

  1. 成为STS客户端并承担对所有必需存储桶的许可的给定角色
  2. 创建内联策略并在获取令牌之前附加到STS客户端
  3. 使用STS客户端进行getSessionToken调用

什么是:

  1. 授予对特定资源的访问权限,该资源受内联策略中指定的路径限制
  2. 也限制了读取或写入的访问权限,如在线策略中所述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM