本文档介绍了如何将 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 服务帐号配置为模拟其他服务帐号,请执行以下操作:
控制台
前往 Cloud Build 权限 页面 settings。
选择您的 Cloud Build 服务帐号。
为您的代管式服务启用所需的 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 会显示分配服务账号用户角色 面板。
选择要模拟的服务帐号。例如,如果您计划部署到 Compute Engine 并启用了 Compute Instance Admin v1 角色,则需要选择您希望 Cloud Build 服务账号模拟的 Compute Engine 服务账号。
点击授予权限 。
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 角色 和 将服务账号附加到资源 。