跨项目部署Cloud Function时SA权限报错:缺少iam.serviceAccounts.actAs权限
问题解决指南
核心原因
你遇到的403错误本质是:project2的cloud-functions-mixer服务账号没有权限"扮演"project1里的SA1。你之前给SA1本身配置的Service Account User权限没用到点子上——这个权限需要授予给cloud-functions-mixer,让它能调用SA1来运行你的Cloud Function。
具体修复步骤
1. 找到project2的cloud-functions-mixer账号
账号格式固定为:service-[PROJECT2的项目编号]@gcf-admin-robot.iam.gserviceaccount.com,可以用命令快速获取project2的项目编号:
gcloud projects describe project2 --format="value(projectNumber)"
或者直接在project2的IAM控制台搜索gcf-admin-robot找到该账号。
2. 给cloud-functions-mixer授予SA1的Service Account User角色
用gcloud命令执行(推荐)
gcloud iam service-accounts add-iam-policy-binding SA1@project1.iam.gserviceaccount.com \ --member="serviceAccount:service-[PROJECT2项目编号]@gcf-admin-robot.iam.gserviceaccount.com" \ --role="roles/iam.serviceAccountUser" \ --project=project1
控制台操作
- 进入project1的IAM & Admin > 服务账号页面
- 找到SA1,点击右侧的"编辑权限"
- 点击"添加成员",输入project2的cloud-functions-mixer完整账号
- 在角色列表里选择IAM > Service Account User,保存即可
关键提醒
- 权限是加在project1的SA1的IAM绑定上,授予对象是project2的cloud-functions-mixer,别搞反了
- 操作时确保你的账号拥有project1中SA1的IAM编辑权限,否则会触发权限报错
内容的提问来源于stack exchange,提问作者Y2Jepic
相关产品推荐
相关产品推荐

