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

如何在Cloud Run中指定应用运行服务账号(兼顾API访问密钥)

解决方案:指定Cloud Run运行服务账号并保留API密钥使用

完全可以实现你的需求——在Cloud Build部署时指定Cloud Run应用使用的服务账号,同时保留API访问密钥的使用,所有配置都可以在cloudbuild.yaml中完成。

1. 在Cloud Build部署步骤中指定Cloud Run服务账号

在cloudbuild.yaml的gcloud run deploy命令里,通过--service-account参数明确指定Cloud Run应用运行时使用的服务账号,同时通过环境变量或Secret Manager挂载你的API访问密钥,两者互不冲突。示例配置如下:

steps:
  # 构建镜像步骤(按需添加)
  - name: 'gcr.io/cloud-builders/docker'
    args: ['build', '-t', 'gcr.io/your-project-id/your-image-name', '.']
  # 推送镜像步骤(按需添加)
  - name: 'gcr.io/cloud-builders/docker'
    args: ['push', 'gcr.io/your-project-id/your-image-name']
  # 部署Cloud Run并指定服务账号+注入API密钥
  - name: 'gcr.io/cloud-builders/gcloud'
    args:
      - 'run'
      - 'deploy'
      - 'your-cloud-run-service-name'
      - '--image'
      - 'gcr.io/your-project-id/your-image-name'
      - '--region'
      - 'us-central1'
      # 指定Cloud Run运行时使用的服务账号
      - '--service-account'
      - 'your-cloud-run-service-account@your-project-id.iam.gserviceaccount.com'
      # 通过环境变量注入API密钥(敏感密钥建议用Secret Manager替代)
      - '--set-env-vars'
      - 'GOOGLE_API_ACCESS_KEY=your-api-key-value'

2. 确保Cloud Build服务账号拥有必要权限

Cloud Build的默认服务账号(格式为[你的项目编号]@cloudbuild.gserviceaccount.com)需要具备部署Cloud Run并设置服务账号的权限,建议为其添加Cloud Run Admin角色(roles/run.admin),或者更细粒度的权限如run.services.update和run.services.setIamPolicy。

3. 关键逻辑说明

  • Cloud Run运行时的服务账号:通过--service-account指定的账号是应用在Cloud Run中执行时的身份,用于访问GCP内部资源(如Cloud Storage、BigQuery等)。
  • API访问密钥:这是独立于服务账号的认证方式,通常用于公共API调用,通过环境变量或Secret Manager注入后,应用可以直接使用,和Cloud Run的运行身份没有关联。

这样配置后,Cloud Build仅负责执行构建和部署操作,Cloud Run应用会以你指定的服务账号运行,同时可以正常使用API访问密钥调用目标API。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 20:30:46