AWS S3 Bucket:“阻止公共访问”和未指定“允许”的空白存储桶策略文件有什么区别?

Kid*_*g_C 3 amazon-s3 amazon-web-services

我对 S3 存储桶策略设置非常困惑。

在此输入图像描述

在这里您可以选择阻止所有公共访问。

但是,如果您取消选择这些选项,为了让公众访问存储桶和对象,您仍然需要在“存储桶策略”部分编辑/添加策略:

在此输入图像描述

您需要将上述策略编辑为以下内容:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::myapp/*"
        },
        {
            "Sid": "2",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity 111111111"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::myapp/*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

如果不指定"Effect": "Allow", "Principal": "*",,则默认策略为“阻止”。

那么,如果默认情况下 public 已经被阻止,为什么我们还需要“阻止公共访问”部分呢?

OAR*_*ARP 11

阻止公共访问功能是存储桶的另一层保护。\nAmazon S3 存储桶和对象是私有的,默认情况下受到保护,可以选择使用访问控制列表 (ACL) 和存储桶策略来向其他 AWS 账户或公共 (匿名)请求。

\n

在阻止公共访问功能发布之前,由于配置错误,经常会看到更多围绕 S3 上存储的数据的数据泄漏和泄露。这不是亚马逊\xe2\x80\x99s的错,是公司\xe2\x80\x99s的错。

\n

因此,如果您想让存储桶或对象可公开访问,首先您需要禁用这个额外的安全层(禁用它并不意味着存储桶或对象是公开的,仅意味着您可以将它们公开),然后使它们通过 ACL、存储桶策略等公开。

\n
\n

参考:

\n

Amazon S3 阻止公共访问 \xe2\x80\x93 为您的账户和存储桶提供另一层保护

\n