我在一个AWS账户中有一个S3存储桶(比如arn:aws:s3:::my-test-bucket
),需要由另一个AWS账户(比如arn:aws:iam::1111222333444:group/mygroup
)中定义的IAM组访问。以下访问策略拒绝保存,并告知arn:aws:s3:::my-test-bucket
是无效主体。
{
"Statement": [
{
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:List*",
"s3:Get*"
],
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::1111222333444:group/mygroup"
},
"Resource": [
"arn:aws:s3:::my-test-bucket",
"arn:aws:s3:::my-test-bucket/*"
],
"Sid": "allow-put-for-dedicated-group"
}
],
}
我已经通过将该组替换为另一个帐户的其中一个用户进行了测试,结果如下:
{
"Statement": [
{
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:List*",
"s3:Get*"
],
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::1111222333444:user/me"
},
"Resource": [
"arn:aws:s3:::my-test-bucket",
"arn:aws:s3:::my-test-bucket/*"
],
"Sid": "allow-put-for-dedicated-user"
}
],
}
该小组已经存在,我不明白为什么它说这是一个无效的校长。事实上,它不接受我的其他帐户的任何组。
有没有人对此行为有解释(可能还有解决方案)?
提前致谢, 干杯
答案 0 :(得分:7)
IAM组在S3存储桶策略中不是有效的主体。有关详细信息,请参阅this AWS forum post和this SO post。
这里有一个可能的想法:在帐户#1(具有S3存储桶的帐户)中创建IAM角色(例如" cross-account-s3")。该角色应该具有允许适当的S3存储桶访问的策略,并且它应该具有信任关系,该关系表明帐户#2中的root用户具有sts:AssumeRole。然后在帐户#2中为相关IAM组提供一个策略,允许该组中的用户从帐户#1承担跨帐户-s3角色。我想这需要您相信第二个帐户中的IAM管理员不允许错误的用户承担跨帐户-s3角色。