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

本地开发时,带IAP的Cloud Run应用访问内部服务的可行方案问询

本地开发Cloud Run前端应用访问内部后端服务的实现模式

以下是几种实用的实现方案,覆盖不同场景需求:

方案1:用gcloud模拟服务身份令牌

  • 核心思路:本地开发时借助GCP CLI获取身份令牌,模拟Cloud Run服务的身份调用后端
  • 操作步骤:
    1. 下载前端Cloud Run服务绑定的服务账号密钥文件,设置环境变量:
      export GOOGLE_APPLICATION_CREDENTIALS="/path/to/your-service-account-key.json"
      
    2. 调用后端前生成目标服务的身份令牌:
      gcloud auth print-identity-token --audiences="https://your-backend-service.run.app"
      
    3. 在请求后端的HTTP头中携带令牌:
      Authorization: Bearer <生成的令牌>
      
    4. 前置条件:确保使用的账号/服务账号拥有后端服务的roles/run.invoker IAM角色

方案2:Cloud Run本地模拟器+VPC接入

  • 核心思路:用Cloud Run本地模拟器运行前端,通过VPN/VPC peering将本地环境接入GCP VPC,直接访问内部服务
  • 操作步骤:
    1. 安装Cloud Run本地模拟器:
      gcloud components install cloud-run-local
      
    2. 启动模拟器时指定关联的VPC网络:
      cloud-run-local --service=your-frontend-service --vpc=your-gcp-vpc --vpc-project=your-gcp-project-id
      
    3. 配置后端服务为内部访问模式(仅允许VPC内流量),并给模拟器使用的服务账号分配访问权限

方案3:IAP隧道代理转发流量

  • 核心思路:通过gcloud建立本地端口到GCP内部服务的IAP隧道,前端直接访问本地端口即可转发请求
  • 操作步骤:
    1. 启动IAP隧道代理:
      gcloud compute start-iap-tunnel your-backend-service 8080 --local-host-port=localhost:8080 --zone=your-gcp-zone
      
    2. 本地前端应用将后端地址改为http://localhost:8080,所有请求会通过隧道转发到GCP内部服务
    3. 前置条件:已启用目标服务的IAP隧道功能,且你的账号有服务访问权限

方案4:代码中直接生成服务间认证JWT

  • 核心思路:在本地代码中加载服务账号密钥,直接生成符合GCP服务间认证规范的JWT令牌
  • 示例代码(Python):
    import google.auth
    from google.auth.transport.requests import Request
    import google.oauth2.id_token
    
    # 后端服务的受众地址
    audience = "https://your-backend-service.run.app"
    credentials, _ = google.auth.default()
    
    # 刷新过期的凭证
    if credentials.expired:
        credentials.refresh(Request())
    
    # 获取目标服务的身份令牌
    id_token = google.oauth2.id_token.fetch_id_token(Request(), audience)
    
    # 发起请求时携带令牌
    headers = {"Authorization": f"Bearer {id_token}"}
    # 后续用headers调用后端API
    
  • 注意:服务账号需拥有后端服务的roles/run.invoker角色

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:33:01