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

如何实现API Gateway仅允许访问过AWS站点的IP动态白名单?

动态限制API仅允许访问过指定站点的IP调用方案

AWS 生态下的实现方式

1. WAF + 签名Cookie 方案

当用户访问你的公开站点(S3/Lightsail/EC2)时,通过站点后端(EC2应用、Lambda@Edge 或 Lightsail 实例)生成带签名的会话Cookie,Cookie需包含用户源IP的哈希值和过期时间戳(防止伪造和复用)。
在API Gateway前端配置AWS WAF,创建以下规则:

  • 检查请求是否携带该签名Cookie
  • 验证Cookie中的IP哈希与请求源IP匹配
  • 校验Cookie签名有效性和过期时间
    不符合规则的请求直接被WAF拦截,只有访问过站点且持有有效Cookie的用户才能调用API。

2. Lambda Authorizer + DynamoDB 会话存储方案

站点在用户首次访问时,生成唯一会话ID,将会话ID、用户IP、过期时间存入DynamoDB,同时把会话ID返回给用户(通过Cookie或前端本地存储)。
在API Gateway中配置Lambda Authorizer,每次API请求触发时:

  • 从请求中提取会话ID和源IP
  • 查询DynamoDB验证会话是否存在、IP匹配且未过期
  • 验证通过则允许API访问,否则返回403拒绝
    这种方案可自定义会话有效期、IP绑定逻辑,灵活性更高。

关于Route 53的说明

Route 53是DNS服务,仅负责流量路由,无法直接实现请求过滤或IP访问限制,因此不能单独用它达成你的需求。

其他云厂商思路

  • 阿里云:使用云盾WAF配合API网关,通过站点设置签名Cookie,WAF规则校验Cookie有效性;或用函数计算作为API自定义认证器,结合Redis存储会话信息实现IP+会话验证。
  • 腾讯云:借助Web应用防火墙(WAF)与API网关集成,站点访问时生成会话并存入云数据库(如TDSQL-C),API请求时通过云函数校验会话与IP匹配性。
  • Google Cloud:利用Cloud Armor(类似AWS WAF)+ Cloud Functions,站点设置签名Cookie,Cloud Armor规则拦截无有效Cookie的请求;或通过Cloud Endpoints配置自定义认证,结合Firestore存储会话数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 12:15:27