两个策略,一个是“拒绝”,我应该无法对存储桶执行任何操作,但我仍然可以列出和查看存储桶对象。为什么?谢谢
S3 存储桶策略
{
"Sid": "S3DenyAccess",
"Effect": "Deny",
"Principal": "*",
"Action": "*",
"Resource": "arn:aws:s3:::<YOURBUCKETHERE>/*"
}
IAM 用户策略
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowConsoleAccess",
"Action": [
"s3:ListAllMyBuckets",
"s3:GetBucketLocation"
],
"Effect": "Allow",
"Resource": [
"arn:aws:s3:::*"
]
}
]
}
答案1
尝试改变资源在里面存储桶策略包括单独的存储桶和带有对象的存储桶:
"Resource": [
"arn:aws:s3:::<YOURBUCKETHERE>",
"arn:aws:s3:::<YOURBUCKETHERE>/*"
]
希望有帮助:)
答案2
AWS 策略评估逻辑会很有用。简而言之,明确拒绝获胜。不过这与此无关。
我是
您的 IAM 用户策略是“此用户可以列出所有存储桶并获取存储桶位置”。
桶策略
您对某个特定存储桶的存储桶策略规定“明确拒绝任何人执行任何反对行为的权限里面存储桶”。资源末尾的“/*”表示该策略适用于“存储桶内部”,而如果省略这些,则表示该策略适用于存储桶本身。
综合
因此,您的组合策略规定所有用户都可以列出存储桶并获取存储桶位置,但不能对存储桶内的对象执行任何操作。我很惊讶您可以列出存储桶中的对象并查看存储桶对象。我怀疑这里还有另一个策略在起作用,因为 AWS 默认拒绝表示它不应该向您显示任何内容。
其他观点
如果有人发现我遗漏了什么,请指出:)