配置 Cloud Build 服务账号的访问权限

Cloud Build 使用特殊服务账号代表您执行构建。当您在 Google Cloud 项目上启用 Cloud Build API 时,系统会自动创建 Cloud Build 服务账号并授予该项目的 Cloud Build 服务账号角色。此角色授予服务账号执行多个任务的权限,但您可以向服务账号授予更多权限来执行其他任务。本页面介绍如何授予和撤消 Cloud Build 服务账号的权限。

准备工作

使用“设置”页面向 Cloud Build 服务账号授予角色

您可以使用 Google Cloud 控制台中的“Cloud Build 设置”页面,向 Cloud Build 服务帐号授予某些常用的 IAM 角色:

  1. 打开 Cloud Build 的“设置”页面:

    打开 Cloud Build 的“设置”页面

    您将会看到服务账号权限页面:

    “服务账号权限”页面的屏幕截图

  2. 将您要添加的角色的状态设置为启用

使用 IAM 页面向 Cloud Build 服务账号授予角色

如果要授予的角色未列在 Google Cloud 控制台的 Cloud Build 设置页面中,请使用 IAM 页面授予该角色:

  1. 打开 IAM 页面:

    打开 IAM 页面

  2. 选择您的 Google Cloud 项目。

  3. 在权限表上方,选中包括 Google 提供的角色授予复选框。

    权限表格中会显示更多行。

  4. 在权限表中,找到电子邮件地址以 @cloudbuild.gserviceaccount.com 结尾的行。这是您的 Cloud Build 服务账号。

  5. 点击铅笔图标。

  6. 选择要授予 Cloud Build 服务帐号的角色。

  7. 点击保存

撤消 Cloud Build 服务账号中的角色

  1. 打开 IAM 页面:

    打开 IAM 页面

  2. 选择您的 Google Cloud 项目。

  3. 在权限表上方,选中包括 Google 提供的角色授予复选框。

    权限表格中会显示更多行。

  4. 在权限表中,找到电子邮件地址以 @cloudbuild.gserviceaccount.com 结尾的行。这是您的 Cloud Build 服务账号。

  5. 点击铅笔图标。

  6. 找到要撤消的角色,然后点击该角色旁边的删除垃圾箱。

向 Cloud Build 服务代理授予角色

除了 Cloud Build 服务账号之外,Cloud Build 还有另一个由 Google 管理的服务账号,名为 Cloud Build Service Agent,允许其他 Google Cloud 服务访问您的资源。启用 Cloud Build API 时,服务代理会在 Google Cloud 项目中自动创建。该服务账号采用以下格式,其中 PROJECT_NUMBER 是您的项目编号。

     service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com

您可以通过以下方式查看项目的服务代理:转到 Google Cloud 控制台中的 IAM 页面,然后选中显示 Google 代管式服务帐号复选框。

如果您不小心从项目中删除了 Cloud Build 服务代理,则可以按照以下步骤手动添加:

控制台

  1. 在 Google Cloud 控制台中打开 IAM 页面:

    打开 IAM 页面

  2. 点击授予使用权限

  3. 添加以下主账号,其中 PROJECT_NUMBER 是您的项目编号:

    service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com
    
  4. 选择服务代理 Cloud Build Service Agent 作为您的角色。

  5. 点击保存

gcloud

roles/cloudbuild.serviceAgent IAM 角色授予 Cloud Build 服务代理:

gcloud projects add-iam-policy-binding PROJECT_ID \
    --member="serviceAccount:service-PROJECT_NUMBER@gcp-sa-cloudbuild.iam.gserviceaccount.com" \
    --role="roles/cloudbuild.serviceAgent"

将命令中的占位值替换为以下内容:

  • PROJECT_ID:项目 ID
  • PROJECT_NUMBER:项目编号

后续步骤