阻止公共访问设置的哪些组合使我的 s3 存储桶对所有人可见?

Niz*_*zzy 5 amazon-s3 amazon-web-services

我是 AWS 的新手,并为静态站点托管创建了一个 s3 存储桶。我想允许所有人只读访问权限,以便他们可以访问该网站。什么样的设置组合给了我这个场景?我是否需要取消选中阻止公共访问设置中的所有 4 个设置?如果所有 4 个设置都设置为关闭,我是否还需要添加存储桶策略?我只想确保存储桶永远不会被写入,而是帐户持有人。谢谢。 在此处输入图片说明

Joh*_*ein 6

阻止公共访问充当额外的保护层,以防止 Amazon S3 存储桶被意外公开。

默认情况下,Amazon S3 中的所有内容都是私有的。然后,您可以通过几种不同的方式访问内容:

  • 在存储桶级别,通过在所需存储上创建存储桶策略。添加到此存储桶的规则可用于授予对对象 ( GetObject)、列表内容、上传、删除等的访问权限。策略也可以非常具体,例如仅允许访问特定 IP 地址。
  • 在对象级别,通过在每个单独的对象上配置访问控制列表 (ACL)。例如,一个对象可以公开访问。
  • 在 IAM 用户或 IAM 组级别,通过将IAM 策略直接添加到用户/组。这非常适合仅授予特定 IAM 用户集的访问权限(而不是公开)。
  • 通过使用以编程方式生成并提供对特定对象的限时访问的预签名 URL。这通常由应用程序用于授予对私有对象的访问权限。例如,照片共享网站会将所有照片保密,但授权用户将能够查看他们自己的照片,或通过应用程序与他们共享的照片。

因此,在您的问题中,您说您希望“允许所有人进行只读访问,以便他们可以访问该网站”。这通常可以通过创建存储桶策略来完成,例如:

{
  "Version":"2012-10-17",
  "Statement":[
    {
      "Sid":"MakeItPublic",
      "Effect":"Allow",
      "Principal": "*",
      "Action":["s3:GetObject"],
      "Resource":["arn:aws:s3:::my-bucket/*"]
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

您应该首先停用引用存储桶策略的两个阻止公共访问设置(底部两个)。

  • 为了使存储桶策略发挥作用,我认为只需要停用最后一个选项,即“通过任何公共存储桶或访问点策略阻止对存储桶和对象的公共和跨账户访问” (5认同)