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

如何限制用户直接访问Cloudfront托管的静态文件,避免重复鉴权

优化CloudFront+S3微前端静态文件访问控制方案

方案1:缓存策略结合Cookie/Token分层鉴权(仅拦截入口文件)

  • 核心逻辑:微前端的index.html是唯一需要强鉴权的入口,静态资源(JS/CSS/图片等)本身无敏感逻辑,只需确保用户通过合法入口访问即可。
  • 配置步骤:
    1. 给CloudFront设置缓存策略:对index.html禁用缓存,每次请求触发Lambda@Edge的Viewer Request事件做完整Token验证;对所有静态资源(*.js/*.css/*.png等)设置长期缓存规则。
    2. Lambda@Edge中仅对入口文件做Token校验,静态资源请求只需验证是否携带合法会话Cookie(用户通过入口鉴权后由服务端下发),无需重复校验完整Token。
    3. 配置S3桶权限:仅允许CloudFront OAI(Origin Access Identity)访问,关闭所有公共访问权限,确保静态资源只能通过CloudFront分发。

方案2:CloudFront Signed Cookies批量授权

  • 核心逻辑:通过预生成的签名凭证授权用户访问,避免每次请求调用Lambda@Edge。
  • 配置步骤:
    1. 启用CloudFront的Signed Cookies功能,针对微前端资源路径生成签名Cookie,有效期设为用户会话时长(比如1小时)。
    2. 用户登录后,由认证服务生成并返回签名Cookie,后续用户请求静态资源时,CloudFront自动验证Cookie合法性,无需Lambda@Edge介入。
    3. 配合S3 OAI配置,确保S3桶仅对CloudFront开放,杜绝直接访问。

方案3:资源分层+Referer校验

  • 核心逻辑:将入口文件与静态资源分离,静态资源通过带Referer校验的CloudFront分发,仅允许来自合法入口域名的请求。
  • 配置步骤:
    1. 微前端入口HTML由后端服务动态生成并鉴权,静态资源部署到单独S3桶,通过独立CloudFront分发。
    2. 在CloudFront的Viewer Request规则中添加Referer校验,仅放行来自你的入口域名的请求,阻止直接URL访问。
    3. 静态资源设置长期缓存,CloudFront自动处理缓存命中,无额外鉴权开销。

基础防护必做配置

  • 禁用S3桶公共访问,配置Bucket Policy仅允许CloudFront OAI访问:
    {
      "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "AWS": "arn:aws:iam::cloudfront:user/CloudFront Origin Access Identity YOUR_OAI_ID"
          },
          "Action": "s3:GetObject",
          "Resource": "arn:aws:s3:::YOUR_BUCKET_NAME/*"
        }
      ]
    }
    
  • 在CloudFront分发中启用Restrict Viewer Access并关联对应OAI,确保S3资源只能通过CloudFront访问。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 08:52:45