amazon-web-services - 阻止公共(public)访问设置的哪些组合使我的 s3 存储桶对所有人可见?

标签 amazon-web-services amazon-s3

我是 AWS 的新手,并为静态站点托管创建了一个 s3 存储桶。我想允许所有人只读访问,以便他们可以访问该网站。什么样的设置组合给了我这种情况?我是否需要取消选中阻止公共(public)访问设置中的所有 4 个设置?如果所有 4 个设置都设置为关闭,我是否还需要添加存储桶策略?我只想确保存储桶永远不会写入帐户持有人。谢谢。
enter image description here

最佳答案

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

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

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

  • 因此,在您的问题中,您说您希望“允许所有人只读访问,以便他们可以访问该网站”。这通常通过创建 来完成。存储桶策略 如:
    {
      "Version":"2012-10-17",
      "Statement":[
        {
          "Sid":"MakeItPublic",
          "Effect":"Allow",
          "Principal": "*",
          "Action":["s3:GetObject"],
          "Resource":["arn:aws:s3:::my-bucket/*"]
        }
      ]
    }
    

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

    关于amazon-web-services - 阻止公共(public)访问设置的哪些组合使我的 s3 存储桶对所有人可见?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58176806/

    相关文章:

    php - 将 AMI 从单独的账户复制到单独的区域

    amazon-web-services - DynamoDb 表设计 : Single table or multiple tables

    javascript - S3 替代方案,允许在不缓冲的情况下上传流文件

    c# - 在上传到 S3 的对象上设置 `Content-Disposition`?

    amazon-web-services - 错误 : Access Denied in S3 bucket after applying VPC policy

    amazon-web-services - DynamodbMapper batchSave 是一个写操作还是多个

    django - 如何在AWS上部署Django?

    amazon-web-services - 无法在 AWS Lambda 中使用 OpenCV-Python

    amazon-web-services - 是否可以在单个请求中将多个文件上传到 Amazon S3?

    amazon-web-services - 不使用 route53 将 Cloudflare 指向 AWS EC2 服务器