我需要一个可以访问多个项目的服务帐户,但我根本找不到这样做的方法。似乎服务帐户始终绑定到项目。
另一种选择是在单独的项目上创建一个服务帐户,然后使用gcloud auth activate-service-account --key-file SOME_FILE.json
对它们进行身份验证,但问题是,似乎无法自动创建服务帐户。
那么问题就在于:是否可以创建跨项目服务帐户或自动创建服务帐户?如果我能做到两件事,那就更好了
答案 0 :(得分:35)
您应该可以将服务帐户添加到另一个项目中:
在云端控制台中的项目A中创建第一个服务帐户。使用gcloud auth activate-service-account
激活它。
在云端控制台中,导航至项目B.找到" IAM&管理员" > " IAM"页。点击"添加"按钮。在"新成员"字段粘贴服务帐户的名称(它应该看起来像一个奇怪的电子邮件地址)并赋予它适当的角色。
运行gcloud
命令,--project
设置为项目B.他们应该成功(我只是手动验证这将有效)。
在我们完成所有安全后果之前,我们一直犹豫不决地自动创建服务帐户。
答案 1 :(得分:14)
答案 2 :(得分:3)
我已经确认自定义令牌签名可以与@Zachary Newman的过程一起使用。
我如何在项目A的GAE应用程序中创建可用于连接到项目B的Firestore的自定义令牌的具体过程如下:
{project-a}@appspot.gserviceaccount.com
,这是项目A的GAE默认服务帐户。{project-a}@appspot.gserviceaccount.com
。initializeApp
方法,并指定firebase-adminsdk-xxxxx@{project-b}.iam.gserviceaccount.com
,这是项目B中项目“ Firebase Admin SDK管理员服务代理”的服务帐户,称为{{ 1}}和serviceAccountId
设为https://{project-b}.firebaseio.com
,然后创建自定义令牌。