本文档介绍了如何配置 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 服务账号配置为模拟其他服务账号,请执行以下操作:
控制台
前往 settings Cloud Build 权限页面。
选择您的 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 文档中的服务账号用户角色和将服务账号附加到资源。