S3 存储桶:ACL 读取所有权限

S3 存储桶:ACL 读取所有权限

我收到了来自 aws 的电子邮件,说我的 aws s3 存储桶配置为允许互联网上的任何人进行读取访问,并要求我检查 ACL 并保护它。基本上,我的 s3 存储桶被用作 cloudfront 分发的后端。以下是我的 s3 存储桶,它们应用了相同的 ACL 和相同的策略。

media-example-com
font-example-com
blog-example-com
app-assets-example-com

下面的通用策略适用于所有存储桶。

{
    "Version": "2008-10-17",
    "Statement": [
        {
            "Sid": "",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::<bucket-name>-example-com/*"
        }
    ]
} 

下面是所有这些存储桶共有的 ACL 屏幕截图。

在此处输入图片描述

我不明白 aws support 说这些存储桶配置为允许从互联网读取访问是什么意思。屏幕截图中清楚地显示不允许读取访问。

答案1

这封电子邮件似乎是对最近发生的几起违规事件的回应,这些事件中有人将敏感信息上传到 S3 的可公开访问的存储桶中。这只是为了提醒您查看您的存储桶并查看它们是否配置正确。

虽然我没有通过 S3 运行网站的实际经验,但我确实尝试探索这一点,并发现 S3 中的每个对象都有自己的 ACL,并且您在将文件上传到 S3 时定义它,这才是真正定义该文件是否可以通过互联网公开访问的。

当您将 S3 存储桶标记为具有读取权限时,任何人都可以列出存储桶中的文件,因此如果您意外地在 S3 存储桶中上传敏感文档,人们就可以找到并下载它。

删除存储桶的读取权限并将其保留在对象级别会更安全。这样,如果您在网页中嵌入了直接链接等,仍然可以访问对象,但没有人可以列出 S3 中的文件,并且任何意外上传都不容易找到。

大多数教程/指南可能由于某些历史原因或仅仅为了简单起见而要求提供对 S3 存储桶的读取权限,但从安全性角度来看,这并不意味着它是正确的选择。

在您的特定情况下,由于您在策略中只允许 GetObject,而不是 List*,因此您的存储桶已经处于良好状态。

相关内容