如何配置API Gateway端点:部分仅对Beanstalk开放,其余暴露至公网且无需令牌?
无需令牌限制API Gateway端点仅允许Beanstalk访问的方法
以下是几种无需使用令牌就能实现安全访问控制的方案,适配你的场景:
1. 基于Beanstalk固定IP的白名单策略
- 给Beanstalk环境分配固定弹性IP(EIP):单实例环境直接给EC2实例绑定EIP;多实例或带负载均衡的环境,给负载均衡绑定固定EIP(负载均衡EIP不会随实例扩容/替换变动,更适合集群场景)。
- 在API Gateway的访问控制配置中,添加IP白名单规则,仅允许上述固定EIP访问指定的受限端点,其他公网IP请求会被直接拒绝。
- 注意:若用单实例绑定EIP的方式,Beanstalk环境扩容时需确保新实例也绑定对应EIP;负载均衡EIP方案则无需额外操作。
2. IAM角色+API Gateway资源策略验证
- 为Beanstalk的EC2实例(或负载均衡)关联专用IAM角色,该角色需包含调用目标API Gateway端点的权限(比如
execute-api:Invoke,指定对应API资源ARN)。 - 在API Gateway的资源策略中添加规则:允许该IAM角色的ARN访问指定受限端点,拒绝所有未授权请求。
- Beanstalk实例上的应用通过AWS SDK调用API Gateway时,SDK会自动使用实例角色的临时凭证完成请求签名,API Gateway会验证身份合法性,无需手动管理令牌。
3. 自定义请求头验证
- 在Beanstalk环境配置中设置安全的自定义环境变量(比如
X-API-AUTH-KEY),值为随机生成的高复杂度字符串(如UUID),Beanstalk会安全存储该变量,不会暴露到公网。 - 在Beanstalk应用代码中,调用API Gateway时自动携带这个自定义请求头。
- 在API Gateway中配置请求验证规则,检查请求是否包含该头且值与预设值一致,只有匹配的请求才能访问受限端点。
方案优先级建议
优先选择IAM角色验证方案,这是AWS原生身份验证机制,安全性最高且无需额外维护IP或密钥;若应用无法使用AWS SDK,可选择固定IP白名单;自定义请求头作为备选方案,适合快速实现的场景。
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

