CloudFront 从 S3 存储桶分发:出现“存储桶是公共的”大警告。可能出现什么问题?

CloudFront 从 S3 存储桶分发:出现“存储桶是公共的”大警告。可能出现什么问题?

我正在将现有的静态网站移动到 S3/CloudFront。

按照 AWS 的一些文档,我在 S3 存储桶上设置了一条策略以将其公开:

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

但是,在应用上述策略时,AWS 会向我发出(说实话很吓人的)警告。与此主题中讨论的相同: 在没有公共存储桶的情况下通过 Cloudfront 和 S3 提供网站服务

我实际上首先尝试了他们在那个答案中描述的方式,设置了 Origin Access Identity,但这导致了令人讨厌的副作用:目录 urls (https://mywebsite.org/directory/) 将不会获取该index.html文件,而会导致 403。

不幸的是,这种行为破坏了很多现有的链接(包括其他网站上的链接),所以我不能这样做。

也可以使用 lambda@edge 来解决这个问题,但老实说,这听起来只是需要更多的代码、更多的问题和更多的钱。

回到那个令人恐惧的大警告:

AWS 警告我 S3 存储桶现已公开

这是一个静态网站,所以显然所有内容都会公开。但是这条消息仍然令人担忧。我应该了解什么,意外访问或潜在的安全问题?有没有办法在不破坏链接或使用 lambda@edge 的情况下解决这个问题?

答案1

如果您将 S3 配置为静态网络托管,请忽略该警告。您的网站应该是公开的,以便匿名访问。

相关内容