跨项目在Workflow中创建CloudRun时模拟ServiceAccount的权限问题
解决跨项目Workflow创建CloudRun时模拟目标服务账号的权限问题
问题概述
在project1的Workflow中尝试创建指定project2中sa2作为服务账号的CloudRun实例时,触发403权限拒绝错误,提示缺少iam.serviceaccounts.actAs权限。
错误原因
当前仅在project1中为sa1配置了角色,但扮演跨项目服务账号的权限需要在目标服务账号所属的项目(project2)中配置:sa1@project1需要被授权拥有扮演sa2@project2的权限,该权限并未自动继承。
解决方案
通过gcloud命令行配置
- 切换到
project2的配置上下文:
gcloud config set project project2
- 为
sa1@project1授予在sa2@project2上的Service Account User角色(该角色包含iam.serviceaccounts.actAs权限):
gcloud iam service-accounts add-iam-policy-binding sa2@project2.iam.gserviceaccount.com \ --member="serviceAccount:sa1@project1.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser"
通过Google Cloud控制台配置
- 登录Google Cloud控制台,切换到
project2 - 进入 IAM与Admin > 服务账号 页面,找到
sa2@project2 - 点击该服务账号右侧的编辑按钮,选择添加权限
- 在成员输入框中填入
sa1@project1.iam.gserviceaccount.com,在角色列表中选择 IAM > Service Account User - 点击保存完成配置
验证要点
- 确保Workflow
workflow1的运行服务账号为sa1@project1 - 创建CloudRun时需指定
serviceAccountName为sa2的完整邮箱地址(sa2@project2.iam.gserviceaccount.com) - 权限配置后需等待1-2分钟生效,再重新测试Workflow
内容的提问来源于stack exchange,提问作者Ildar Galikov
相关产品推荐
相关产品推荐

