Amazon web services S3存储桶仍然是公共的,尽管有CloudFront源站身份访问策略
我遵循了有关设置CloudFront(CF)web发行版以从我的s3 bucket中提供私人内容的文档,但尽管调整了发行版中的设置,我的s3 bucket文件仍然可以通过Amazon web services S3存储桶仍然是公共的,尽管有CloudFront源站身份访问策略,amazon-web-services,amazon-s3,amazon-cloudfront,Amazon Web Services,Amazon S3,Amazon Cloudfront,我遵循了有关设置CloudFront(CF)web发行版以从我的s3 bucket中提供私人内容的文档,但尽管调整了发行版中的设置,我的s3 bucket文件仍然可以通过s3.amazonaws.com/bucket name/file name.ext访问。我很好奇为什么会出现这种情况,因为当我创建一个CF源访问标识时,我选择了是,更新Bucket Policy,我认为它可以通过我的s3 Bucket url关闭读取访问,但它没有。我是否错过了应该进行的调整?我认为我在CF上所做的设置应该调整
s3.amazonaws.com/bucket name/file name.ext
访问。我很好奇为什么会出现这种情况,因为当我创建一个CF源访问标识时,我选择了是,更新Bucket Policy
,我认为它可以通过我的s3 Bucket url关闭读取访问,但它没有。我是否错过了应该进行的调整?我认为我在CF上所做的设置应该调整我的s3存储桶,使其无法通过GET请求访问
以下是我的s3桶策略:
{
"Version": "2008-10-17",
"Id": "PolicyForCloudFrontPrivateContent",
"Statement": [
{
"Sid": "1",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity *My-Key-ID*"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket-name/*"
}
]
}
但是,我注意到对单个文件的权限,但不确定它们与什么相关
以下是我的CF设置:
分布:
来源:(在初始身份创建时,我选择了“是,更新桶策略”)
行为(上半部分):
行为(下半部分):
存储桶策略和对象ACL协同工作 仍然允许策略或对象ACL允许的任何内容。。。除非bucket策略明确拒绝 您的策略允许通过CloudFront下载 您的对象ACL允许“所有人”打开/下载它们,因此,仍然允许匿名直接访问bucket中的对象 最正确的解决方案是修改对象ACL以删除“所有人”的“打开/下载”功能,如果不希望匿名用户从S3访问对象,这显然是不正确的。在控制台中,单击对象“Everyone”条目上的×,然后单击保存。你应该发现这解决了问题 将来的对象不应作为公共可读对象上载 这也可以通过使用自定义bucket策略覆盖对象ACL来实现,但这是一种高级配置,如果操作不正确,将破坏您在控制台中操作对象的能力,并将不必要地使事情复杂化