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

AWS架构中如何防止绕开CloudFront直接访问API Gateway?

CloudFront + API Gateway 防绕开访问的解决方案

先直接回答你的核心问题:只给API Gateway和CloudFront配置相同的自定义域名,无法阻止他人直接访问API Gateway的默认端点。因为默认的xxx.execute-api.region.amazonaws.com端点依然存在并可被访问,自定义域名只是提供了一个替代访问路径,并没有限制默认端点的可用性。

下面是几个切实可行的措施,确保只有CloudFront能向API Gateway转发请求:

1. 配置API Gateway资源策略,限制仅CloudFront来源的请求

这是最可靠的方式,通过API Gateway的资源策略直接过滤请求来源:

  • 拿到你的CloudFront分发的ARN(格式:arn:aws:cloudfront::你的AWS账号ID:distribution/分发ID)
  • 在API Gateway控制台的资源策略中添加规则,只允许来自该CloudFront分发的请求
  • 示例策略代码:
{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": "*",
      "Action": "execute-api:Invoke",
      "Resource": "arn:aws:execute-api:你的区域:你的账号ID:你的API ID/*",
      "Condition": {
        "ArnEquals": {
          "aws:SourceArn": "arn:aws:cloudfront::你的账号ID:distribution/你的分发ID"
        }
      }
    }
  ]
}

这个策略会拒绝所有不是从指定CloudFront分发过来的请求,包括直接访问默认端点的请求。

2. 禁用API Gateway的默认执行端点

如果你的API完全不需要通过默认端点访问,可以直接禁用它:

  • 进入API Gateway控制台,选中你的API
  • 切换到Settings页面,找到Default endpoint选项,设置为Disable
  • 操作完成后,默认的execute-api端点会直接返回403,任何人都无法通过它访问你的API

3. 搭配WAF双重防护(可选但推荐)

在CloudFront层面配置WAF的同时,也给API Gateway配置一套相同的WAF规则。这样即使有人绕过CloudFront(比如如果资源策略配置有误),API Gateway层面的WAF依然能提供防护,作为安全兜底。

4. 启用CloudFront Origin Shield

Origin Shield是CloudFront在边缘节点和源站之间的一层缓存节点,启用后所有请求必须经过Origin Shield才能到达API Gateway。这不仅能优化缓存效率,还能进一步确保请求来自CloudFront生态,减少直接访问源的可能性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 17:29:58