AWS CloudFront 通过 OAC 访问 S3 返回拒绝访问

问题描述 投票:0回答:1

我在 S3 存储桶上托管了一个静态网站。我最初将存储桶完全公开并设置为静态网站托管,同时测试云端,一切正常,我通过我的备用域完美地访问了该网站。但是我现在想限制 S3 文件的可访问性,只允许通过云端访问,但是在按照各种教程进行操作后,访问被拒绝。

所以我遵循了:https://repost.aws/knowledge-center/cloudfront-serve-static-website 这也遵循了我读过的其他一些教程,它们都对 OAC 流程说了同样的话但是我在尝试访问我的网站时被拒绝访问。

所以我的 S3 存储桶现在完全禁用了公共访问权限,现在也禁用了静态网站托管,我使用“签名请求”和 S3 作为源类型进行了云端源访问控制设置,在我的云端源中,我选择了我的 S3来自源域的存储桶,选择源访问控制并选择我刚刚从列表中创建的源访问,我禁用了启用源屏蔽,复制了它创建的 S3 策略并选择了保存更改。然后我转到我从该来源选择的 S3 存储桶并将其粘贴到策略字段中。所以它看起来像这样(用虚拟数据替换了我的帐户信息,但在实际政策中我已经确认它是正确的):

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "AllowCloudFrontServicePrincipal",
            "Effect": "Allow",
            "Principal": {
                "Service": "cloudfront.amazonaws.com"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::examplebucketid/*",
            "Condition": {
                "StringEquals": {
                    "AWS:SourceArn": "arn:aws:cloudfront::11736596049:distribution/E1OS67E245W70W"
                }
            }
        }
    ]
}

如果我转到我的云端源选项卡,我可以看到源域是我的 S3 存储桶,源访问是我刚刚设置的访问控制的 ID。

在 S3 上,我有对象所有权 - 强制执行存储桶所有者,静态网站托管被禁用,我确实有 CORS 设置,但我也尝试过没有它们。仅供参考,虽然他们目前是:

[
    {
        "AllowedHeaders": [
            "*"
        ],
        "AllowedMethods": [
            "GET",
            "HEAD"
        ],
        "AllowedOrigins": [
            "*"
        ],
        "ExposeHeaders": [],
        "MaxAgeSeconds": 3000
    }
]

它的默认行为是选择 S3 存储桶作为源,并将 HTTP 重定向到 HTTPS。发行版的默认根对象也是 /index.html,它已正确上传到 S3 存储桶,并且在将 S3 设置为私有之前一直在工作。

我环顾四周并遵循了教程,甚至尝试了新的 S3 和云端分发实例,但我得到了相同的拒绝访问结果。我还尝试改用 OAI 并让 CloudFront 自行更新我的 S3 策略,但仍然被拒绝访问。我也在等待任何云端更改在测试之前完全部署,但结果相同。

有什么我需要更改或可以检查的吗?我一直在寻找几个小时,我看到的每个教程或其他帖子都来自旧版本的 AWS 界面,其中的选项不一样,或者只是显示我所遵循的,除了他们的工作之外。

amazon-web-services security amazon-s3 amazon-cloudfront
1个回答
0
投票

以前我有默认的根对象作为

/index.html
所以我假设它会保持不变,因为它在S3设置为静态网站主机时有效,但将其更改为
index.html
解决了这个问题。我想权限设置是正确的,只是默认根对象设置不正确。

© www.soinside.com 2019 - 2024. All rights reserved.