java - 如何使用AWS STS为s3中的文件的特定资源创建只读和只写 token

标签 java amazon-web-services sts-securitytokenservice aws-sts

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

到目前为止我已经尝试过:

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

它的作用是

  1. 让用户使用 token 访问 S3 中的文件
  2. 但此访问权限不限于只读或只写
  3. 此外,如果 IAM 角色可以访问更多存储桶,则 token 将访问所有存储桶

创建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());

生成 token 请求

GetSessionTokenRequest session_token_request = new GetSessionTokenRequest();

生成 token

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. 能够生成只读和只写 token
  2. 能够生成路径特定的标记
  3. token 仅限于引用的资源,而不是 IAM 角色中附加的所有存储桶

最佳答案

be able to generate read only and write only tokens

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

be able to generate path specific tokens

角色可以包含对特定 S3 key (文件名)的引用,例如:



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

关于java - 如何使用AWS STS为s3中的文件的特定资源创建只读和只写 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57153021/

相关文章:

asp.net-mvc-4 - VS2013 & MVC 4 -如何设置thinktecture嵌入式STS

java - 不兼容的类型 : List<A> cannot be converted to List<U>

Java FileWriter 每次写入新行

Java Hashtable#hashCode() 实现坏了?

asp.net-mvc - 寻找安全可靠的 STS 实现

amazon-web-services - 解码 AWS session token

可预先保留的 Java JVM 最大堆大小

database - DynamoDB - 设计一对多关系

amazon-web-services - 在AWS上尝试Dask

node.js - AWS Elastic Beanstalk : Do I have to deploy my app with full "/node_modules" and "/bower_components" and compiled sass and other dependencies?