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

跨项目场景下能否将其他项目服务账号绑定到Pub/Sub推送订阅

跨项目服务账号绑定可行性结论

Pub/Sub推送订阅不存在不支持跨项目绑定服务账号的限制,你最初的方案完全可行,报错是权限配置缺失导致的。控制台UI下拉框仅展示同项目服务账号属于前端展示限制,不影响API/gcloud命令实现跨项目绑定。

报错根因

你当前的权限配置漏了两项核心配置:

  1. Project2的Pub/Sub官方服务代理账号,没有被授予Project1中service_account1的服务账号令牌创建者权限,无法跨项目模拟该服务账号生成访问Cloud Run的身份令牌
  2. 你执行gcloud命令的操作账号,缺少Project1中service_account1的服务账号用户权限,无法在创建订阅时指定其他项目的服务账号
修复操作步骤
  • 首先获取Project2的Pub/Sub服务代理账号:
    gcloud projects get-iam-policy project2 --filter="binding.role:roles/pubsub.serviceAgent" --format="value(binding.members)"
    输出的账号格式为service-<project2数字ID>@gcp-sa-pubsub.iam.gserviceaccount.com,记为PUBSUB_SA。

  • 给该代理账号授予Project1服务账号的令牌创建权限:
    gcloud iam service-accounts add-iam-policy-binding service_account1@project1.iam.gserviceaccount.com --project=project1 --member=serviceAccount:${PUBSUB_SA} --role=roles/iam.serviceAccountTokenCreator

  • 给你的操作账号授予Project1服务账号的模拟使用权限:
    gcloud iam service-accounts add-iam-policy-binding service_account1@project1.iam.gserviceaccount.com --project=project1 --member=user:<你的GCP登录账号邮箱> --role=roles/iam.serviceAccountUser

  • 重新执行订阅创建命令,注意服务账号需填写全量邮箱地址:

gcloud --project=project2 pubsub subscriptions create test_subscrption \
  --topic=topic-name \
  --topic-project=project2 \
  --push-auth-service-account=service_account1@project1.iam.gserviceaccount.com \
  --push-endpoint=https://my-cloud-run-service.run.app/

内容的提问来源于stack exchange,提问作者Andrea B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 16:36:00