配置VPC内Cloud Run实例仅允许指定CIDR范围的互联网入站流量
解决Cloud Run实例限制特定IP入站流量的方案
核心问题说明
当Cloud Run的Ingress设置为All时,入站流量直接由Google的前端负载均衡处理,不会经过您的VPC网络,因此VPC防火墙规则无法对这类流量生效。而Route all traffic through VPC仅控制出站流量的路由路径,和入站流量无关,这就是您之前配置无效的原因。
无需修改代码的可行方案
方案1:针对VPC内私有IP的限制
如果您要允许的是VPC内的私有IP访问,可按以下步骤配置:
- 将Cloud Run的
Ingress设置为Internal and Cloud Load Balancing,仅允许VPC内部流量和经Cloud Load Balancing的流量访问实例。 - 创建并关联VPC Access连接器,让Cloud Run实例接入目标VPC。
- 在VPC中配置防火墙规则,允许指定私有IP段访问Cloud Run实例的服务端口。
方案2:针对公网IP的限制(推荐用Cloud Armor)
如果您要允许的是公司公网IP这类外部地址,用Cloud Armor实现白名单是最适配的方案,完全无需修改业务代码:
- 为目标Cloud Run实例创建Serverless Network Endpoint Group (NEG)。
- 创建Cloud Load Balancer,将上述NEG添加为后端服务。
- 为负载均衡器关联Cloud Armor安全策略,在策略中添加允许的公网IP段,同时设置默认规则为拒绝所有其他流量。
- 将Cloud Run的
Ingress设置为Internal and Cloud Load Balancing,确保只有通过负载均衡器的流量能访问实例。
关键注意事项
- 明确
Ingress设置的边界:All模式下公网流量直接访问Cloud Run,完全绕过VPC;Internal and Cloud Load Balancing模式仅开放授权入口的访问权限。 - Cloud Armor是Google云原生的Serverless流量防护工具,专门解决这类无需代码改造的IP过滤需求。
内容的提问来源于stack exchange,提问作者Andrew Killingbeck
相关产品推荐
相关产品推荐

