使用服务帐户进行跨项目管理

Leo*_*eon 28 google-cloud-platform gcloud

我需要一个可以访问多个项目的服务帐户,但我根本找不到这样做的方法.似乎服务帐户始终绑定到项目.

另一个选择是在单独的项目上创建一个服务帐户,然后使用它们进行身份验证gcloud auth activate-service-account --key-file SOME_FILE.json,但问题是,似乎无法自动创建服务帐户.

那么问题是:是否可以创建跨项目服务帐户或自动创建服务帐户?如果我能做到两者,那就更好了

Zac*_*man 41

您应该能够将服务帐户添加到另一个项目:

  1. 在云控制台中的项目A中创建第一个服务帐户.使用激活它gcloud auth activate-service-account.

  2. 在云控制台中,导航到项目B.找到"IAM&admin">"IAM"页面.单击"添加"按钮.在"新成员"字段中粘贴服务帐户的名称(它应该看起来像一个奇怪的电子邮件地址)并赋予它适当的角色.

  3. 运行gcloud命令--project设置为项目B.他们应该成功(我只是手动验证这将工作).

在我们完成所有安全后果之前,自动创建服务帐户是我们犹豫不决的事情.

  • 这是否适用于签名和解码令牌?我认为键不同?我想让两个项目互相调用服务。 (2认同)
  • 我有同样的问题,这可以与令牌签名一起使用吗? (2认同)
  • 很有魅力!添加具有正确角色的新用户时,只需复制粘贴 SA 帐户(来自其他项目的看起来很长的电子邮件) (2认同)

Vin*_*ini 16

我知道它有点旧,但如果有人还在寻找这个,要添加到@Zachary Newman回答,为了清楚起见,在项目A中创建服务帐户之后,你应该将项目B转到"IAM"(不是"服务帐户"),您可以使用适当的角色添加刚刚创建的电子邮件.


kim*_*ula 6

我已经确认自定义令牌签名适用于 @Zachary Newman 的程序。

我在项目 A 的 GAE 应用程序中创建自定义令牌(可用于连接到项目 B 的 Firestore)的具体过程如下:

  1. 在项目B的“IAM”页面中,添加服务帐号,{project-a}@appspot.gserviceaccount.com该服务帐号是项目A的GAE默认服务帐号。
  2. 在项目B的“IAM”页面中,为 分配“Service Account Token Creator”角色{project-a}@appspot.gserviceaccount.com
  3. initializeApp在项目 A 的 GAE 应用中调用 Firebase Admin SDK方法,并指定firebase-adminsdk-xxxxx@{project-b}.iam.gserviceaccount.com,这是项目 B 中具有“Firebase Admin SDK 管理员服务代理”的服务帐户 asserviceAccountIdhttps://{project-b}.firebaseio.comas databaseURL,然后创建自定义令牌。