首页 > 解决方案 > 如何将多个服务帐户凭据分配给 Google Cloud Functions?

问题描述

我有三个服务帐户:

  1. 应用引擎默认服务帐号
  2. 数据存储服务帐号
  3. 警报中心 API 服务帐号

我的云函数在数据存储模式下使用 Firestore 进行簿记并调用警报中心 API。

部署云功能时只能分配一个服务帐户。

是否有类似于 AWS 的方式,可以创建多个内联策略并将其分配给默认服务帐户。

PS 我尝试创建自定义服务帐户,但不支持数据存储角色。此外,我不想将凭据存储在环境变量中或使用源代码上传凭据文件。

标签: google-cloud-functionsgoogle-cloud-datastoreservice-accountsgoogle-alert-center-api

解决方案


您正在查看服务帐户有点倒退。

当然,我知道命名如何引导您朝这个方向发展。在这种情况下,“服务”不是指所提供的服务,而是指试图访问所提供服务的非人类实体(即应用程序、机器等 - 在这种情况下称为服务)。从了解服务帐户

服务帐户是一种特殊类型的 Google 帐户,属于您的应用程序或虚拟机 (VM),而不是个人最终用户。您的应用程序假定服务帐户的身份来调用 Google API,因此用户不会直接参与其中。

因此,您不应该从所提供的服务角度(即数据存储或警报中心 API)查看服务帐户,而应从他们的“用户”角度(在这种情况下为您的 CF)查看服务帐户。

分配给特定 CF 的单个服务帐户只是在访问某个服务时识别该 CF(与其他一些 CF、应用程序、机器、用户等相反)。

如果您希望该 CF 能够访问某个 Google 服务,您需要为该 CF 的服务帐户提供适当的角色和/或权限来执行此操作。

要访问 Datastore,您将查看这些Permissions 和 Roles。如果您的 CF 需要访问的数据存储在同一个 GCP 项目中,则默认 CF 服务帐户(与该项目中的 GAE 应用程序相同)已经可以访问数据存储(当然,如果您对使用默认服务帐户)。

我没有使用 Alert Center API,但显然它使用 OAuth 2.0,所以你可能应该通过Service accounts


推荐阅读