我必須為 S3 中的文件生成只讀和只寫令牌。到目前為止我嘗試了什么:創建一個對引用中的存儲桶具有讀寫訪問權限的 IAM 角色創建 STS 客戶端承擔 STS 客戶端在步驟 #1 中創建的 IAM 角色使用 sts 客戶端生成憑據這是做什么的讓用戶使用令牌訪問 S3 中的文件但這種訪問不限于只讀或只寫此外,如果 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());期待能夠生成只讀和只寫令牌能夠生成路徑特定的令牌令牌僅限于引用中的資源,而不是 IAM 角色中附加的所有存儲桶
2 回答

慕標5832272
TA貢獻1966條經驗 獲得超4個贊
我找到了解決方案。
創建一個 STS 客戶端并承擔一個給定的角色,并有權訪問所有必需的存儲桶
在獲取令牌之前創建一個內聯策略并附加到 STS 客戶端
使用 STS 客戶端進行 getSessionToken 調用
是做什么的:
允許訪問受在線策略中給定路徑限制的特定資源
它還限制了在線策略中提到的讀取或寫入訪問

湖上湖
TA貢獻2003條經驗 獲得超2個贊
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"
]
}
]
}
添加回答
舉報
0/150
提交
取消