【问题标题】:How to restrict CloudFront access to my website only?如何限制 CloudFront 仅访问我的网站?
【发布时间】:2015-07-16 21:08:27
【问题描述】:

我查看了以下答案,但它讨论了私有内容和签名 URL 的原始访问身份。我的内容不是私人的,它对公众开放,但我不希望其他网站热链接到我的图像。换句话说,我网站上的图片应该可以通过我的域下的 URL 访问。

Simple example to restrict access to Cloudfront(S3) files from some users but not others

我已按照以下文档在我的 CloudFront 分配上创建 OAI。
http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/private-content-restricting-access-to-s3.html

在我的发行版上应用 OAI 后,发生了一些奇怪的事情。我可以访问一些图像,而有些则不能。
从 localhost 工作时,我无法访问 CloudFront 图像。

有没有一种方法可以指定哪些域可以访问我的资源而哪些不能?像这样?

{
            "Sid": "AllowPublicRead",
            "Effect": "Allow",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::my-bucket/*",
            "Condition": {
                "StringLike": {
                    "aws:Referer": [
                        "http://example.com/*",
                        "localhost:*"
                    ]
                }
            }
        }

【问题讨论】:

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


    【解决方案1】:

    通过像您这样的策略的“阻止”操作必须在 Cloudfront 级别发生。 S3 不会考虑,除非它被查询新内容(这可能解释了为什么您在尝试访问图像时遇到奇怪的问题)。

    如果您的问题本质上是试图阻止盗链,那么不幸的是,我相信通过 AWS 处理此问题的唯一方法是使用签名 URL: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html

    这是关于该主题的 Stack 线程:Preventing Amazon Cloudfront hotlinking

    只是给你一个更简单的替代方案,虽然需要偶尔手动更新,这是我过去所做的。它的核心是在您的 Cloudfront 发行版上放置一个 CNAME,例如 assets-1.yoursite.com。几个月后,如果您发现自己被热链接,您只需将 CNAME 更改为 assets-2.yoursite.com,然后更新您的站点以使用新 URL。如果您有一个变量来控制您网站的 CDN 路径,这可能是一个快速修复。

    这里有深入的解释: http://www.explainthatstuff.com/blocking-cloudfront-hotlinks.html

    然后,您可以使用 AWS 控制台中的 Cloudfront“流行对象”和“热门推荐人”分析部分来监控来自其他站点的流量,看看何时是切换 CNAME 的好时机。

    【讨论】:

      猜你喜欢
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2019-11-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多