【问题标题】:How to change Public access to private for S3 Bucket Policy如何将 S3 存储桶策略的公共访问更改为私有
【发布时间】:2019-10-06 20:27:15
【问题描述】:

我是 AWS S3 上的新手,我创建了存储桶,在上面存储了用户个人资料照片和我们在 S3 上的日常数据备份(定期上传)。

当我打开 S3

Access: Public is showing

当我打开存储桶时,权限选项卡也显示为公开。

我的存储桶策略也是公开的,

说明创建存储桶的标准且安全的实施方式是什么。

如果我删除公共访问权限,那么用户是否会获得其个人资料照片? 如果我删除公共访问权限,那么我的数据库备份是否会上传?

我知道有推荐的私人选项,但从公共更改为私人后,我担心我的照片和数据库备份将无法正常工作。

我的存储桶策略是

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::mybucketname/*"
        }
    ]
}

这项政策很明确,这将允许所有人。

任何拥有丰富知识和专业知识的人请建议我一些解决此问题的好方法。非常感谢任何帮助、支持或建议。

【问题讨论】:

    标签: amazon-web-services amazon-s3


    【解决方案1】:

    默认情况下,Amazon S3 中的所有对象都是私有的。这意味着只能通过提供 AWS 凭证来访问它们。这很好。

    如果您希望将对象设为Public,那么任何人都可以访问该对象。上述存储桶策略将整个存储桶公开,因此任何人都可以在存储桶上调用GetObject。诚然,他们需要知道对象的名称,因为他们无法列出存储桶的内容,但对象是可公开访问的。

    通常最佳做法是仅在必要时授予对数据的访问权限。因此,如果您有一个希望显示用户个人资料照片的网站,那么将它们公开可能是可以的。但是,您不太可能希望全世界都可以访问您的数据备份。因此,将整个存储桶公开可能不是一个好主意。

    有几种方法可以授予对 Amazon S3 中对象的访问权限:

    • 存储桶策略可以将存储桶或存储桶的一部分设为公开。
    • 单个对象上的访问控制列表 (ACL) 可以使该对象公开
    • IAM 权限可以添加到 IAM 用户和 IAM 组以授予特定用户访问权限
    • 预签名网址可以授予对对象的限时访问权限

    如果您有一个显示个人资料图片的应用程序,但您不希望公开个人资料图片,则您的应用程序可以生成一个预签名 URL,该 URL 提供对私有的临时访问权限目的。此 URL 可用于网页上的 <img src=.../> 标记。到期后,该 URL 将不再有效。

    因此,最好的方法是让对象保持私有,除非您有特定的理由将它们公开。使用预签名 URL 是提供临时访问权限的好方法。

    见:Share an Object with Others - Amazon Simple Storage Service

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-04-20
      • 1970-01-01
      • 1970-01-01
      • 2014-11-24
      • 1970-01-01
      • 2016-11-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多