You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为AWS CloudFront添加访问安全限制的解决方案咨询

限制CloudFront资源仅允许自有网站访问的可行方案

一、修正Web ACL的Referer验证配置

你之前用Web ACL没达到效果,大概率是规则配置没到位,正确的配置逻辑应该是:

  • 创建一条字符串匹配规则,匹配请求头里的Referer字段
  • 设置匹配条件为包含你的网站域名(比如your-domain.com,记得覆盖带www和不带的情况,或者用通配符*.your-domain.com)
  • 把这条规则的动设为允许,再添加一条默认规则设为阻止
  • 务必开启CloudFront的AllViewer触发器,确保所有用户请求都经过Web ACL校验

不过要注意,Referer头可以被伪造,而且部分浏览器可能不会发送这个头,所以这个方法只能做基础防护,要更稳妥得结合其他方案。

二、使用CloudFront签名URL/签名Cookie

这是更可靠的方案,核心是只有带有效签名的请求才能访问资源:

签名URL(适合单个文件/短期访问场景)

  • 用AWS SDK或者CloudFront CLI工具生成带签名的URL,签名里可以指定有效期、允许的IP范围、Referer等限制条件
  • 你的网站后端动态生成这些签名URL,前端页面只加载带签名的链接。就算别人拿到链接,过期后就失效,不符合签名里的限制条件也会被CloudFront拒绝

签名Cookie(适合批量资源场景,比如你的视频、缩略图)

  • 生成包含签名的Cookie,把Cookie的生效域名设为你的网站域名,有效期可以自己定义
  • 用户访问你的网站时,后端把签名Cookie写入浏览器,之后用户访问CloudFront资源时,Cookie会自动带上,CloudFront验证签名通过后才允许访问
  • 这种方式不用给每个资源单独生成签名URL,适合批量分发的资源,效率更高

三、结合Origin Access Control (OAC) 锁死源站

不管用上面哪种方法,都得配上OAC:

  • 在CloudFront分发里关联OAC,设置仅允许CloudFront访问你的源站(比如S3桶)
  • 这样就算有人摸清了你的源站地址,也没法直接访问资源,必须走CloudFront的校验流程

四、额外强化手段

  • 开启CloudFront的缓存策略,确保带签名的请求不会被缓存,避免未授权用户访问缓存的资源
  • 配置源站的Bucket Policy,只允许OAC对应的CloudFront身份访问,进一步把源站的权限锁死

内容的提问来源于stack exchange,提问作者M Kashan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 05:01:25