“我们强烈建议您不要授予任何形式的对 S3 存储桶的公共访问权限。”
我为用于托管网站的一个存储桶设置了非常精细的公共策略 (s3:GetObject)。Route53 明确支持为此目的对存储桶进行别名。这个警告是多余的,还是我做错了什么?
答案1
是的,如果你知道自己在做什么(编辑:和所有人别的也可以访问它...),您可以忽略此警告。
它的存在是因为即使大型组织 谁应该知道,他们不小心将私人数据放入了公共存储桶中。除了控制台警告外,如果您将存储桶公开,Amazon 还会向您发送提醒电子邮件。
由于 IT 人员错误配置了 S3 孤岛,埃森哲、Verizon、维亚康姆、伊利诺伊州选民信息和军事信息均被发现无意中向网上所有人公开。
如果你绝对、100% 确定存储桶中的所有内容都应该公开和没有人会意外地将私人数据放入其中 - 静态 HTML 网站就是一个很好的例子 - 那么无论如何,都将其公开。
答案2
隐私问题ceejayoz 的回答并不是唯一的问题。
从 S3 bucket 读取对象是需要付出代价的。AWS 将会为您从该存储桶下载的每次内容收取费用。如果您的流量很大(或者如果有人想损害您的业务开始全天大量下载文件),那么成本很快就会变得昂贵。
如果你希望存储桶中的文件可供公众访问,你应该创建一个指向并被授予访问 S3 存储桶的 Cloudfront Distribution。
现在,您可以使用 Cloudfront Distribution 的域名来提供文件,而无需向公众授予任何 S3 访问权限。
在此配置中,您需要为 Cloudfront 的数据使用付费,而不是为 S3 付费。而且,如果数据量较大,费用会便宜很多。