使用 gcloud CLI 为 Cloud 运行 创建自定义服务帐户

Creating a custom service account for Cloud Run using the gcloud CLI

背景

默认情况下,Cloud Run uses the Compute Engine default service account 授予广泛的权限,而我尝试在其中 运行 的容器不需要这些权限,因此我想设置一个新的服务帐户。

如果我理解正确,我需要执行以下操作:

  1. 创建具有所需权限集的角色(使用 gcloud iam roles create
  2. 创建服务帐户(使用 gcloud iam service-accounts create
  3. 将角色权限绑定到服务帐户。
  4. 使用在步骤 2 中设置的服务帐户部署映像(使用 gcloud run deploy --service-account)。

上述文档没有提到如何实现步骤 3。我找到了 gcloud iam service-accounts add-iam-policy-binding 命令,但我看到这是用户(成员)、服务帐户和角色之间的三向绑定,而我上面所描述的似乎只需要双向绑定,即在第四步中向云 运行 服务授予权限。

问题

  1. 我是否正确理解了为 Cloud 运行 使用设置自定义服务帐户所需的步骤?
  2. 假设我理解正确,设置权限与服务帐户绑定的正确方法是什么?

除了用户管理的服务帐户之外,您还可以使用自定义角色,但这不是强制性的。您还可以创建一个用户管理的服务帐户并将其与预定义的角色绑定。

无论如何,如果您想将自定义角色绑定到服务帐户(或用户帐户,没有区别),您必须使用角色的完全限定路径

# Project level
projects/<projectID>/roles/<custom role name>
# Organization level
organizations/<organizationID>/roles/<custom role name>

gcloud 命令可以是这个

gcloud projects add-iam-policy-binding <projectID> \
  --member=serviceAccount:<service account email> \
  --role=projects/<projectID>/roles/<custom role name>