为什么 AWS 不建议使用公共 S3 存储桶?

And*_*son 65 security amazon-s3 amazon-web-services amazon-route53

“我们强烈建议您永远不要授予对 S3 存储桶的任何类型的公共访问权限。”

我为我用来托管网站的一个存储桶设置了非常精细的公共策略 (s3:GetObject)。为此,Route53 明确支持为存储桶设置别名。这个警告是多余的,还是我做错了什么?

cee*_*yoz 80

是的,如果您知道自己在做什么(编辑:其他有权访问它的人也知道...),您可以忽略此警告。

它的存在是因为即使 是应该知道更多的大型组织也意外地将私有数据放入了公共存储桶中。如果您在控制台内警告之外公开存储桶,亚马逊还会向您发送提醒电子邮件。

由于 IT 部门错误配置了他们的 S3 孤岛,埃森哲、威瑞森、维亚康姆、伊利诺伊州的选民信息和军事信息都无意中向所有人开放。

如果您绝对 100% 确定存储桶中的所有内容都应该是公开的并且没有人会意外地将私有数据放入其中——静态 HTML 站点就是一个很好的例子——那么无论如何,请将其公开。

  • 在实践中,您几乎*永远* 10​​0%确定,因此最佳实践是不要。 (2认同)

Que*_*yot 41

ceejayoz 的回答提到的隐私问题并不是唯一的问题。
从 S3 存储桶读取对象是有代价的。AWS 将为此存储桶中的每次下载向您收费。如果您有大量流量(或者如果有人想要损害您的业务,开始整天大量下载文件),它很快就会变得昂贵。

如果您希望您的存储桶中的文件可公开访问,您应该创建一个指向 S3 存储桶并被授予访问权限的 Cloudfront Distribution

现在,您可以使用 Cloudfront Distribution 的域名来为您的文件提供服务,而无需向公众授予任何 S3 访问权限。
在此配置中,您需要为 Cloudfront 的数据使用量而不是 S3 的使用量付费。在更高的数量下,它会便宜得多。

  • CloudFlare 也有效,而且可能更便宜。 (2认同)