如何将我的 AWS S3 存储桶设为私有并授予对象读取访问权限?

时间:2021-03-23 17:13:21

标签: amazon-web-services amazon-s3

我有标识为公共的 S3 存储桶。除了一个是在 2017 年创建的。另一个是在 2019 年创建的。当我创建它们时,我没有做任何关于访问存储桶的特殊事情。我假设在阅读此段落后,默认情况下我必须授予对存储桶的访问权限。

默认情况下,Amazon S3 会阻止对您的账户和存储桶的公开访问。如果您想使用存储桶来托管静态网站,您可以使用这些步骤来编辑您的阻止公共访问设置。

我显然错了。今天早上我收到一封电子邮件,说他们强烈建议我更改我的存储桶策略,因为我的存储桶是公开的。我阅读了他们提供的文档,但未能找到如何将我的存储桶设为私有但允许访问对象的方法。

帐户和存储桶级别的唯一选项包括对对象和存储桶的操作。

  • 阻止对通过新访问权限授予的存储桶和对象的公开访问 控制列表 (ACL)
  • 阻止对通过任何访问控制列表 (ACL) 授予的存储桶和对象的公开访问
  • 阻止对通过新公共存储桶或访问权限授予的存储桶和对象的公共访问 积分政策
  • 通过任何公共存储桶或访问点策略阻止对存储桶和对象的公共和跨账户访问

我尝试了其中的几个,但无法访问我网站上的任何对象。

我的每个存储桶的访问控制列表中唯一的条目是拥有所有访问权限的存储桶所有者。

我想修改仅包含 GetObject 访问权限的存储桶策略。此代码基于 AWS S3 文档。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::nbcbigbend/*"
        }
    ]
}

我已经进行了网络搜索,但我找到的所有解决方案都假设存储桶默认是私有的,并且人们希望将其公开。几年前创建它们后,我没有进行任何存储桶更改,但现在它们已被识别为公共。自从我在 2019 年创建最后一个存储桶以来,新存储桶的创建方式似乎发生了一些变化。

我想在我的 JSON 代码中添加一些内容,使我的存储桶成为私有的,或者至少限制对所有者的访问。到目前为止,我还没有找到如何做到这一点。

0 个答案:

没有答案
相关问题