Cloud Build 的自定义服务账号

Cloud Functions 在构建和部署 Cloud Functions 函数时会利用 Cloud Build。默认情况下,Cloud Functions 在执行构建时,原则上使用默认的 Cloud Build 服务账号。本文档介绍了如何传入用户创建的服务账号,以供 Cloud Build 在部署函数时使用。

您可以使用 Google Cloud CLI、Google Cloud 控制台或 Cloud Functions API 通过自定义服务账号部署函数。

在如下这些场景中,您可能需要提供其他服务账号,以便在 Cloud Build 构建函数时使用:

  • 您希望更好地控制要添加到 VPC-SC 边界的服务账号。

  • 您希望 Cloud Build 以与默认服务账号不同的权限运行,而不必单独撤消每项权限。

  • 您希望专门为您的函数设置精细的 Cloud Build 权限,而不是共享已针对其他目的进行优化的 Cloud Build 服务账号。

启用 API

此功能需要启用 IAM API。

使用 Google Cloud CLI 启用部署 Cloud Functions 函数所需的 API,或使用 Google Cloud 控制台

gcloud services enable iam.googleapis.com

配置服务账号

本文档介绍了如何创建新的服务账号并授予所需的权限。如果要使用现有服务账号,则需要您打算使用的服务账号的电子邮件地址。如需了解详情,请参阅配置用户指定的服务账号

您可以按如下方式查看现有服务账号,也可以使用 Google Cloud 控制台:

gcloud iam service-accounts list

创建服务账号

使用 Google Cloud CLI 创建您的服务账号或使用 Google Cloud 控制台:

gcloud iam service-accounts create SA_EMAIL

SA_EMAIL 替换为您的服务账号的电子邮件地址。

授予权限

您使用的服务账号需要具有以下角色:

使用 Google Cloud CLI 或使用 Google Cloud 控制台授予以下角色。

gcloud projects add-iam-policy-binding SA_PROJECT_ID \
--member=user:DEPLOYING_USER_EMAIL \
--role=roles/iam.serviceAccountUser

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
    --role=roles/logging.logWriter

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/artifactregistry.writer

gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:SA_EMAIL \
--role=roles/storage.objectAdmin

替换以下内容:

  • PROJECT_ID:您的 Google Cloud 项目 ID
  • SA_EMAIL:您的服务账号的电子邮件地址。
  • SA_PROJECT_ID:您的服务账号的项目 ID。
  • DEPLOYING_USER_EMAIL:部署函数的用户的电子邮件地址。

使用自定义服务账号部署函数

您可以使用 Google Cloud CLI 部署一个使用 Cloud Build 自定义服务账号的函数:

  • --build-service-account 标志指定其凭据用于构建步骤的 IAM 服务账号。如果未提供自定义服务账号,则该函数会将项目的默认服务账号用于 Cloud Build。
  • 您可以视需要使用通过 --build-worker-pool 标志指定的专用池

gcloud functions deploy FUNCTION_NAME \
   --gen2 \
   --region=REGION \
   --project=PROJECT_ID \
   --runtime=RUNTIME \
   --entry-point=CODE_ENTRYPOINT \
   --build-service-account=projects/PROJECT_ID/serviceAccounts/SA_EMAIL \
   --memory=256Mi \
   --trigger-http \
   --source=.

替换以下内容: