我正在尝试配置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中做任何事情。我猜想这种断开是因为我不知道所有这些不同的访问控制方法是如何相互作用的。我的用例看起来非常简单:拒绝除某些对象之外的所有对象。他们实现这一目标的最佳方法是什么?
答案 0 :(得分:0)
您的政策应该有效。我刚刚检查过。它为我工作。而且它不会使整个存储桶公开。
"{'type': 'box', 'layout': 'horizontal', 'margin': 'xs', 'contents': [{'type': 'text', 'text': '12/12/2019 time 15:00', 'size': 'sm', 'weight': 'bold'}, {'type': 'text', 'text': 'Press', 'size': 'sm', 'align': 'end', 'weight': 'bold', 'color': '#EE4C4C', 'action': {'type': 'message', 'label': 'Click', 'text': 'to to this'}}]}"
注意:当S3控制台显示单词{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::awsexamplebucket/*",
"Condition": {
"StringEquals": {
"s3:ExistingObjectTag/public": "yes"
}
}
}
]
}
时,这并不意味着整个存储桶都是公共的,这意味着至少有一部分存储桶是公共的。
它应该对我有用,不仅对我有用,AWS文档也以它为例: https://aws.amazon.com/premiumsupport/knowledge-center/read-access-objects-s3-bucket/