gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 09:30:22 26 4
gpt4 key购买 nike

我必须为 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com