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

本文档介绍了如何配置 Cloud Build 服务账号,以模拟运行时、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 文档中的服务账号用户角色将服务账号附加到资源