我组织中的其他一些用户需要访问我们的S3存储桶。我进入了存储桶策略,复制并粘贴了现有的部分,并输入了他们给我的帐户ID(我称为ABC和DEF)。
他们尝试过,并且在尝试列出对象时仍然被拒绝。还有什么需要做的吗?
像List *这样的通配符是否实际起作用,还是我必须说ListObject?有人在政策中的其他地方做了。
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::AWS-account-id-ABC:role/prod-role",
"arn:aws:iam::AWS-account-id-DEF:role/dev-role"
]
},
"Action": [
"s3:Get*",
"s3:Put*",
"s3:List*"
],
"Resource": "arn:aws:s3:::bucket_name/*"
}
答案 0 :(得分:2)
由于主体位于不同的AWS账户中,因此IAM策略和存储桶策略均有效。
检查附加到这些角色的IAM策略是否具有S3:ListBucket权限。 ( S3:ListBucket 是允许用户列出存储桶中对象的权限名称。ListObjects是API调用。)
答案 1 :(得分:2)
根据documentation,ListBucket
需要存储桶资源(不是您提供的对象资源)。因此,我认为您应该按如下方式修改政策。
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::AWS-account-id-ABC:role/prod-role",
"arn:aws:iam::AWS-account-id-DEF:role/dev-role"
]
},
"Action": [
"s3:Get*",
"s3:Put*"
],
"Resource": "arn:aws:s3:::bucket_name/*"
},
{
"Effect": "Allow",
"Principal": {
"AWS": [
"arn:aws:iam::AWS-account-id-ABC:role/prod-role",
"arn:aws:iam::AWS-account-id-DEF:role/dev-role"
]
},
"Action": [
"s3:ListBucket"
],
"Resource": "arn:aws:s3:::bucket_name"
}