为受管服务配置 Cloud Build 服务账号模拟

本文档介绍了如何将 Cloud Build 服务帐号 配置为 模拟服务账号,以便您可以将映像部署到 托管式服务(适用于 Runtime、Compute Engine 或 App Engine)。

概览

当映像部署到特定托管式服务时,该映像会使用该代管式服务的服务帐号的身份运行。由于 Cloud Build 可以自动部署新实例或版本, 因此您指定的 Cloud Build 服务账号默认 Cloud Build 服务账号 必须能够模拟代管式服务的服务帐号。此要求适用于部署到以下托管式服务时:

托管式服务 服务账号
App Engine App Engine 服务账号
Cloud Run functions 运行时服务账号
Cloud Run 服务身份
Compute Engine Compute Engine 服务账号

设置服务帐号模拟

如需将 Cloud Build 服务帐号配置为模拟其他服务帐号,请执行以下操作:

控制台

  1. 前往 Cloud Build 权限 页面

  2. 选择您的 Cloud Build 服务帐号。

  3. 为您的代管式服务启用所需的 IAM 角色:

    托管式服务 所需角色
    App Engine App Engine Admin ( roles/appengine.appAdmin )
    Cloud Run functions Cloud Functions Developer ( roles/cloudfunctions.developer )
    Cloud Run Cloud Run Admin ( roles/run.admin )
    Compute Engine Compute Instance Admin v1 ( roles/compute.instanceAdmin.v1 )

    Cloud Build 会显示分配服务账号用户角色 面板。

  4. 选择要模拟的服务帐号。例如,如果您计划部署到 Compute Engine 并启用了 Compute Instance Admin v1 角色,则需要选择您希望 Cloud Build 服务账号模拟的 Compute Engine 服务账号。

  5. 点击授予权限

gcloud CLI

在 Google Cloud CLI 中,输入以下内容:

  gcloud iam service-accounts add-iam-policy-binding \
        SERVICE_ACCOUNT_TO_IMPERSONATE \
        --member="CLOUD_BUILD_SERVICE_ACCOUNT" \
        --role="roles/iam.serviceAccountUser"

其中:

  • SERVICE_ACCOUNT_TO_IMPERSONATE 是您要模拟的服务帐号。
  • CLOUD_BUILD_SERVICE_ACCOUNT 是您的 Cloud Build 服务帐号。

Cloud Build 会为您的 Cloud Build 服务帐号分配您要模拟的服务帐号的 Service Account User (roles/iam.serviceAccountUser) 角色。

借助 Service Account User 角色,主账号可以将服务帐号附加到资源,从而允许您的 Cloud Build 服务帐号模拟您选择的代管式服务账号。如需了解详情, 请参阅 IAM 文档中的 Service Account User 角色将服务账号附加到资源