繁体   English   中英

我应该公开我的S3存储桶以进行静态网站托管吗?

[英]Should I make my S3 bucket public for static site hosting?

我有一个s3存储桶,该存储桶用于托管可通过cloudfront访问的静态站点。 我希望使用s3 <RoutingRules>将任何404重定向到请求主机名的根。 为此,我需要将cloudfront来源设置为使用s3“网站端点”。

但是,为了使Cloudfront能够通过“网站终结点”而非“ s3 REST API终结点”访问s3存储桶,我需要显式将存储桶公开,即使用以下策略规则:

{
            "Sid": "AllowPublicGetObject",
            "Effect": "Allow",
            "Principal": {
                        "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::dev.ts3.online-test/*"
},
{
            "Sid": "AllowPublicListBucket",
            "Effect": "Allow",
            "Principal": {
                        "AWS": "*"
            },
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::dev.ts3.online-test"
}

一切都很好。 有用。 但是,AWS给了我一个很好的闪亮警告,说:

此存储桶具有公共访问权限。 您已提供对此存储桶的公共访问权限。 我们强烈建议您不要授予对S3存储桶的任何公共访问权限。

所以我想两个问题:

  1. 当然,应该警告一下这个警告,这只是AWS方面的惰性吗? 存储桶中的所有内容都是可以自由请求的静态文件。 存储桶中没有受保护的内容或秘密内容。 我不明白为什么公开阅读绝对是一个安全漏洞...
  2. 为了省心,是否有任何方法可以在存储桶策略中指定仅将其授予cloudfront的PrincipalId? (我知道如果我使用REST端点,可以将其设置为OAI,但不能使用其余端点)

关于警告的第一件事。

列表存储桶视图显示您的存储桶是否可公开访问。 Amazon S3标记存储桶的权限,如下所示:

上市 -

  • 每个人都可以访问以下一项或多项:列出对象,写入对象,读取和写入权限。

对象可以是公共的– ::

  • 存储桶不是公共的,但是具有适当权限的任何人都可以授予对对象的公共访问权限。

桶和对象不是公共的–: -桶和对象没有任何公共访问权限。

仅此帐户的授权用户–:

  • 由于该策略可以授予公共访问权限,因此访问权限与IAM用户以及该帐户和AWS服务主体中的角色是隔离的。

因此,由于第一个警告。 以下是AWS针对s3静态网站推荐的政策。

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "PublicReadGetObject",
            "Effect": "Allow",
            "Principal": "*",
            "Action": [
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::example-bucket/*"
            ]
        }
    ]
}

向网站存储桶添加存储桶策略,该策略向所有人授予访问存储桶中对象的权限。 将存储桶配置为网站时,必须使要公开提供的对象可读。 为此,您编写了一个存储桶策略,该策略向每个人授予s3:GetObject权限。 以下示例存储桶策略向所有人授予对示例存储桶存储桶中对象的访问权限。

BTW的公共访问只能是GET ,而不能是其他任何东西,完全允许GET请求在S3上访问您的静态网站。

在此处输入图片说明 静态网站托管

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM