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 beta 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=.

替换以下内容: