【发布时间】:2020-11-08 15:45:31
【问题描述】:
我有 3 个 AWS 账户。账户 A 有一个 lambda (Lambda_Account_A),账户 B 有一个角色 (Role_Account_B),账户 C 有一个 s3 存储桶 (S3_Account_C)。账户 C 中的资源配置了存储桶策略 - Role_Account_B 可以访问此存储桶。
如果账户 A 中的 lambda 承担账户 B 角色 (Role_Account_B) 并生成 STS 凭证,这些凭证是否可以访问账户 C 资源 s3 存储桶?
帐户 B 和 C 已配置为相互信任。
账户 A 的 lambda 代码:
try {
AssumeRoleRequest roleRequest = new AssumeRoleRequest()
.withRoleArn(assumeRole) //arn of the role in account B
.withPolicy(policy) // policy contains "arn:aws:s3:::my_bucket"
.withDurationSeconds(3600)
.withRoleSessionName(SESSION_NAME);
// Assume the IAM role
AssumeRoleResult assumeResult = stsClient.assumeRole(roleRequest);
final BasicSessionCredentials temporaryCredentials = new BasicSessionCredentials(
assumeResult.getCredentials().getAccessKeyId(),
assumeResult.getCredentials().getSecretAccessKey(),
assumeResult.getCredentials().getSessionToken());
return temporaryCredentials;
} catch (AWSSecurityTokenServiceException e) {}
账户 C 中的存储桶政策:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::account_No:role/Account_B_role”
},
"Action": [
"s3:Get*",
],
"Resource": "arn:aws:s3:::my_bucket/*”
}
]
}
Role_B 权限策略是
{
"Version": "2012-10-17",
"Statement": [
{
"Action": [
"s3:*"
],
"Resource": "*",
"Effect": "Allow"
}
]
}
它的信任关系既有Account A也有Account C
【问题讨论】:
标签: amazon-web-services amazon-s3 aws-lambda amazon-iam