我正在尝试配置S3存储桶,以使除某些对象之外的所有对象都是私有的。我正在使用这样的存储桶策略:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::foo/*",
"Condition": {
"StringEquals": {
"s3:ExistingObjectTag/public": "true"
}
}
}
]
}
然后,当然,将某些对象标记为“ public:true”。当我添加此存储桶策略但不执行任何其他操作时,所有对象都是公开可用的,无论它们是否已采用这种方式标记。我在“阻止公共访问”屏幕上尝试了不同的组合,但是我要么获得了允许的一切,要么获得了拒绝的一切。然后是“访问控制列表”屏幕,我没有做任何事情:
我在IAM中也没有做任何事情。我猜想这种断开是因为我不知道所有这些不同的访问控制方法是如何相互作用的。我的用例看起来非常简单:拒绝除某些对象之外的所有对象。他们实现这一目标的最佳方法是什么?
如果您尝试进行GetObject
api或CLI调用,则您的策略应该会起作用。