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

GitHub Actions部署Google Cloud Run权限不足及最小权限配置咨询

Cloud Run GitHub Actions CD 最小权限配置方案

错误原因说明

你碰到的Permission 'iam.serviceAccounts.getAccessToken' denied问题,核心是权限授予范围不对:roles/iam.serviceAccountTokenCreator角色确实包含该权限,但必须确保你的新服务账号,对Cloud Run部署时使用的运行服务账号(也就是你要actAs的那个SA)拥有这个角色权限,而不是仅在项目级别给新服务账号授予该角色。

最小权限清单

1. 身份验证与令牌生成权限

  • 给新服务账号授予roles/iam.serviceAccountTokenCreator角色,作用范围限定为Cloud Run的运行服务账号(而非整个项目),该角色包含iam.serviceAccounts.getAccessToken等令牌生成所需权限。

2. Cloud Run部署核心权限(需加入自定义角色)

  • run.services.get:获取现有Cloud Run服务信息,用于增量更新部署
  • run.services.update:更新Cloud Run服务配置与镜像(首次部署需额外加run.services.create)
  • iam.serviceAccounts.actAs:允许新服务账号以Cloud Run运行服务账号的身份执行部署操作,作用范围限定为Cloud Run的运行服务账号
  • 如果部署私有镜像(如GCR/Artifact Registry):
    • Artifact Registry:artifactregistry.repositories.downloadArtifacts
    • Container Registry:storage.objects.get
  • 若需从Secret Manager拉取部署密钥:secretmanager.versions.access(你已配置此权限)

关键排查步骤

  • 验证权限范围:在IAM控制台中找到Cloud Run的运行服务账号,检查是否已将新服务账号添加为成员并授予roles/iam.serviceAccountTokenCreator和iam.serviceAccounts.actAs权限
  • 检查GitHub Actions配置:确保cloud-run.yml中指定的服务账号、身份验证参数(如Workload Identity的audience)与实际配置一致
  • 用命令确认权限:
    # 查看新服务账号对运行SA的权限
    gcloud iam service-accounts get-iam-policy [RUN_SERVICE_ACCOUNT_EMAIL] --filter="bindings.members:serviceAccount:[NEW_SERVICE_ACCOUNT_EMAIL]"
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 21:52:34