静态托管是否会使S3存储桶覆盖存储桶的“阻止公共访问”设置?

时间:2019-07-31 04:53:47

标签: amazon-web-services amazon-s3

我创建了一个存储桶,但没有更改默认的“阻止公共访问”设置。但是,我为该存储桶启用了静态虚拟主机。这实际上会覆盖S3存储桶的“阻止公共访问”设置吗?

因为AWS文档说:

enter image description here

有点模棱两可,对此有什么想法吗?因为当s3设置为“阻止公共访问”时可以访问我的s3网站。

enter image description here

1 个答案:

答案 0 :(得分:1)

为了测试这种情况,我做了以下事情:

  • 使用默认设置创建一个新的Amazon S3存储桶
  • 将文件上传到存储桶
  • 使用公共URL测试对文件的访问:
    • https://my-bucket.s3-ap-southeast-2.amazonaws.com/foo.jpg
    • Access Denied(好!)
  • 启用了静态网站托管
  • 使用静态网站URL测试对文件的访问:
    • http://my-bucket.s3-website-ap-southeast-2.amazonaws.com/foo.jpg
    • 结果: 403禁止访问(好!)
  • 关闭 S3阻止公共访问
  • 再次测试了两个URL
    • 相同的结果(均被拒绝)

因此,仅激活静态网站托管不足以将其公开。

结论

如果您的对象可以公开访问,则可能是以下两种情况之一造成的:

  • 存储桶策略,将存储桶公开,
  • 有关对象本身的
  • 访问控制列表( ACL

但是,如果在存储桶和对象(根据您的图片)上启用了“阻止公共访问”,则这些对象将不是公共的。在这种情况下,您一定不能一直通过对象的公共(匿名)URL访问对象。如果您单击控制台中的打开下载按钮,该按钮会附加用户信息,则可能会发生这种情况。相反,您应该使用原始URL(例如上面列出的URL)进行测试。