通过现有VPC与企业VPN隧道访问Cloud Run服务的问题
问题分析与解决方案
核心误解澄清
ABC-Conn VPC连接器的作用是让Cloud Run服务主动访问VPC内的资源(比如内部数据库、VM实例),不负责控制外部请求进入Cloud Run的入口流量。你遇到的403错误,根源是Ingress设置和访问控制策略不匹配,且请求未通过企业VPN的可信路径访问。
具体修复步骤
1. 调整Cloud Run的Ingress控制策略
要限制Cloud Run服务仅允许企业网络访问,需将Ingress Control从All改为以下两种之一:
Internal only:仅允许来自VPC内部(包括通过VPN/Cloud Connect接入的企业网络)的请求访问。Internal and Cloud Load Balancing:允许VPC内部请求+通过Cloud Load Balancer转发的请求(适合需要通过内部LB做额外路由的场景)
修改命令示例(gcloud):
gcloud run services update YOUR_SERVICE_NAME --ingress=internal
2. 确保企业网络的VPN路由正确同步
确认你的企业VPN隧道已正确配置路由,将GCP VPC的CIDR段纳入VPN路由范围。注意:Cloud Run的服务域名对应IP是动态的,更可靠的方式是确保企业桌面的所有GCP方向请求都通过VPN隧道转发,而非仅针对10.8.0.0/28子网。
3. 验证访问路径
- 在企业桌面执行路由追踪命令,检查请求是否通过VPN隧道到达GCP:
traceroute YOUR_CLOUD_RUN_SERVICE_URL
- 如果请求走公网,需调整企业桌面路由表,将GCP VPC的CIDR段指向VPN网关。
4. 补充:用IAP做更精细的访问控制(可选)
如果需要更严格的身份验证(比如仅允许企业域内用户访问),可以启用Cloud Identity-Aware Proxy(IAP):
- 将Ingress Control设为
All - 启用IAP并配置仅允许企业域用户访问
- 确保企业用户通过VPN或企业身份提供商认证后访问
关键注意事项
- 不要混淆Serverless VPC Access(出站)和Ingress Control(入站)的作用
Internalingress模式下,Cloud Run服务只能通过VPC内部IP或专用域名访问,公网无法直接访问- 企业VPN的路由配置必须覆盖所有需要访问Cloud Run的客户端路径
内容的提问来源于stack exchange,提问作者TripodNH
相关产品推荐
相关产品推荐

