【发布时间】:2018-05-21 01:08:05
【问题描述】:
我正在尝试在我的存储桶上设置一个策略,以允许对我的对象进行公共“GetObject”访问,但仅限于特定前缀内的那些。像这样:
{
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::mybucket/publicstuff/*"
}
问题是,AWS 警告我这会使整个存储桶公开。果然,确实如此;如果我尝试从 /mybucket/anywhereelse/ 获取对象,S3 会免费提供它。所以 'mybucket' 之后的所有内容都会被忽略。
有没有办法建立适用于存储桶中特定前缀的存储桶策略?我尝试了一个策略条件,但发现在使用 s3:GetObject 操作时无法使用 s3:prefix。
【问题讨论】:
-
删除此策略,您应该会发现存储桶已经并且仍然是公共的,原因与此策略无关。请指教。
-
嗨@Michael-sqlbot,否则存储桶是私有的。如果我删除此策略,则存储桶是私有的。如果我包含它,则存储桶是完全公开的。
-
我会尝试复制,但直觉告诉我你误解了一些东西,虽然我不知道是什么。验证一下,这是您的整个政策吗?并且您确实删除并重新添加了此策略以仔细检查/验证此路径前缀之外的测试对象“x”在添加时是否变为公共,并在删除时恢复为私有?这是在哪个地区?
标签: amazon-web-services amazon-s3 bucket