场景: 我们的基础设施上有 3 个 AWS 账户。 仅在 1 个账户中创建了 IAM 用户。他们使用切换角色登录其他帐户。
现在创建 IAM 用户的账户中有一个 S3 存储桶,但当 IAM 用户使用切换角色登录其他账户时,他们看不到 S3 存储桶。
以下是 S3 存储桶策略内部: 正如您所看到的,我们已向其他帐户中存在的角色授予权限。
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::975062884610:role/dev-switch-role",
"arn:aws:iam::243225358771:role/prod-switch-role"
]
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::logs-s3-bucket"
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::975062884610:role/dev-switch-role",
"arn:aws:iam::243225358771:role/prod-switch-role"
]
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::logs-s3-bucket/*"
}
并且在角色策略中,他们具有 AdministratorAccess 策略,但在切换到其他帐户后仍然无法查看存储桶。
假设您有:
授予对 Amazon S3 存储桶的跨账户访问权限时,您需要授予以下两项:
因此,我的猜测是,非功能角色尚未获得访问账户 B 中的 S3 存储桶的权限。
您可能想知道为什么需要BOTH 组权限。这是因为: