【问题标题】:How to force S3 requests to go through cloudfront如何强制 S3 请求通过云端
【发布时间】:2023-03-24 18:35:02
【问题描述】:

我对 S3 和云前端非常陌生。

我在 S3 存储桶中有一个 web 应用程序。我从另一个应用程序重新路由到该应用程序。该重新路由在查询字符串中包含一些敏感信息,因此我只想接受 https 请求。 为此,我需要云端并希望避免直接访问存储桶。

桶:abc.xyz.com.s3.amazonaws.com 网址:abc.xyz.com

我在 cloudfront 中启用了 https onlyRestrict Bucket Access 选项。

虽然这在云端运行良好,但原始网址 abc.xyz.com 似乎并没有通过云端。 http 仍然可用,https 不起作用。

有没有办法强制只通过云端访问存储桶?

存储桶策略:

{
    "Version": "2008-10-17",
    "Id": "PolicyForCloudFrontPrivateContent",
    "Statement": [
        {
            "Sid": "1",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity ORIGINACCESSID"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::abc.xyz.com/*"
        }
    ]
}

【问题讨论】:

    标签: amazon-web-services amazon-s3 amazon-cloudfront


    【解决方案1】:

    除了在 CloudFront 中将 Restrict Bucket Access 设置为 Yes,您还需要将 S3 存储桶策略本身编辑为:

    (将 XXXXXXXXXXXXXX 字符串替换为在 CloudFront 分配的源中​​为您创建的源访问 ID)

    {
        "Version": "2012-10-17",
        "Id": "Policy1476619022974",
        "Statement": [
            {
                "Sid": "Stmt1415003054675",
                "Effect": "Allow",
                "Principal": {
                    "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity XXXXXXXXXXXXXX"
                },
                "Action": "s3:GetObject",
                "Resource": "arn:aws:s3:::YOUR-BUCKET-NAME/*"
            }
        ]
    }
    

    您可以阅读更多关于使用原始访问身份来限制对您的 Amazon S3 内容的访问here

    【讨论】:

    • @Moezalez:您是否在 DNS 中创建了指向 CloudFront 分配的域名而不是 S3 存储桶端点的 A 记录(类型:ALIAS)?
    • 记录?那是云端还是s3的东西?我在云端设置了 CNAME。
    • 这是一个 DNS 服务的东西(Route 53 或其他)。 CloudFront 中的 CNAME 使您可以使用自己的域名而不是 CloudFront 的域名。您还需要将 abc 主机指向 CloudFront 分配,而不是 S3 存储桶。您可以在此处阅读更多内容(参见第 7 条)docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/…
    • 主持人?在这种情况下,主机是 S3,不是吗?所有文件都从那里提供。
    • 如果您只想限制 S3 对 CloudFront 的访问,那么主机应该是 CloudFront 分配而不是 S3,CloudFront 将为您从 S3 检索对象(因此需要源访问身份) .
    猜你喜欢
    • 1970-01-01
    • 2012-03-31
    • 2021-06-20
    • 2018-02-02
    • 2014-12-08
    • 1970-01-01
    • 2019-03-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多