设置构建服务账号(源代码部署)

在函数的源代码部署期间,Cloud Run 会在构建和部署函数时利用 Cloud Build。

本页介绍了如何设置用户指定的服务账号,以便 Cloud Build 在代表您执行函数构建时使用。本指南适用于在 Cloud Run 中部署函数且需要自定义 Cloud Build 使用的构建服务账号的平台开发者。

准备工作

  1. 启用 Cloud Build API

    gcloud services enable cloudbuild.googleapis.com
  2. 创建服务账号或已有服务账号,以用作 Cloud Build 的服务账号。

所需的角色

如需获得从源代码部署所需的权限,请让管理员向您授予项目的以下 IAM 角色:

如需允许用于 Cloud Build 的服务账号在部署函数时执行构建,请让您的管理员向您授予服务账号的以下 IAM 角色:

  • Logs Writer (roles/logging.logWriter) - 用于在 Cloud Logging 中存储构建日志。
  • Artifact Registry Writer (roles/artifactregistry.writer) - 用于在 Artifact Registry 中存储构建映像。
  • Storage Object Admin (roles/storage.objectAdmin) - 用于从 Cloud Storage 存储桶检索函数来源,以及将构建映像存储在 Artifact Registry 中。

如需查看与 Cloud Run 关联的 IAM 角色和权限的列表,请参阅 Cloud Run IAM 角色Cloud Run IAM 权限。如果您的 Cloud Run 服务与 Google Cloud API(例如 Cloud 客户端库)进行交互,请参阅服务身份配置指南。如需详细了解如何授予角色,请参阅部署权限管理访问权限

指定 Cloud Build 服务账号

默认情况下,如果在从源代码部署函数时未指定 Cloud Build 服务账号,则 Cloud Build 会使用 Cloud Build 服务账号

遵循最小权限原则以改善函数的安全状况的最佳实践,我们建议您在从源代码部署函数时指定自己的服务账号来运行构建。

gcloud

您可以在函数部署期间指定要用作 Cloud Build 服务账号的服务账号。

如需在从源代码部署函数时指定 Cloud Build 服务账号,请执行以下操作:

gcloud beta run deploy SERVICE \
  --source . \
  --function FUNCTION_ENTRY_POINT \
  --build-service-account BUILD_SERVICE_ACCOUNT

您需要将其中的:

  • SERVICE 替换为 Cloud Run 函数的名称。
  • FUNCTION_ENTRY_POINT 替换为源代码中函数的入口点。省略 --function 标志可指定从源代码部署的服务。
  • BUILD_SERVICE_ACCOUNT 替换为用户指定的服务账号。