如何配置Cloud Armor规则实现同负载均衡下API与应用的流量管控?
解决方案:限制App Engine与Compute Engine服务间的流量
核心问题分析
你的场景中,请求经过负载均衡器后,remoteIP为客户端设备IP,因此无法通过IP过滤实现服务间流量限制;Host/Referer头可伪造,安全性不足。需要依赖不可伪造的服务身份标识来实现流量控制。
方案一:Cloud Armor + 服务身份验证(推荐)
通过Google Cloud的服务账号身份验证结合Cloud Armor规则,确保只有合法的App Engine服务能访问FastAPI服务器:
- 为App Engine配置服务账号:创建专用服务账号,授予其访问Compute Engine FastAPI服务的权限(例如
roles/compute.instanceAdmin或自定义权限)。 - FastAPI端验证身份:使用
google-auth-library等工具,验证请求携带的Authorization头中的OAuth2令牌,确认请求来自合法的App Engine服务账号。 - Cloud Armor规则配置:
- 针对
demo-api.com:创建规则,仅允许携带有效、签名正确的Authorization令牌的请求;拒绝所有未携带令牌或令牌无效的请求。 - 针对
demo-app.com:创建规则,仅允许来自App Engine服务的请求(可结合身份感知代理IAP,验证用户身份的同时限制API请求发起源)。
- 针对
方案二:内部通信隔离(适用于无需对外暴露API的场景)
如果FastAPI服务器无需对外提供服务,仅需与App Engine通信:
- 将Compute Engine实例部署在VPC网络内,配置内部负载均衡器。
- 启用App Engine的VPC访问功能,让Angular应用通过内部网络访问FastAPI。
- Cloud Armor规则配置为仅允许VPC内部IP段的流量访问FastAPI,拒绝所有外部流量。
Cookie方案的局限性
不推荐使用Cookie实现:
- Cookie可被客户端篡改、窃取,安全性无法保障。
- Cloud Armor仅能检查Cookie的存在,无法验证其有效性(即使使用签名Cookie,也需要额外的签名校验逻辑,Cloud Armor无法直接完成)。
- 跨域名(
demo-app.com与demo-api.com)场景下,Cookie跨域共享配置复杂,且存在CSRF等安全风险。
参考资料指引
- Cloud Armor官方文档:重点关注「身份感知代理集成」「自定义HTTP头匹配规则」章节
- App Engine VPC访问文档:学习如何配置App Engine与VPC网络的连接
- FastAPI Google身份验证文档:了解如何在FastAPI中集成Google Cloud服务账号身份验证
内容的提问来源于stack exchange,提问作者breach
相关产品推荐
相关产品推荐

