Cloud Build 默认服务账号更改

Cloud Build 自动选择 Cloud Build 服务 账号来代表您执行构建,除非您替换此行为。 此默认服务账号权限可能过于宽泛 例如对 Container Registry 代码库的访问权限 项目中的 Cloud Storage 存储桶。

Cloud Build 在新界面中使用服务账号的默认行为 项目在 2024 年 5 月和 6 月在几周内发生了变更。这些 改进后客户的默认安全状况, 。您可以通过配置组织政策限制条件来选择不应用这些更改。

在此次变更之前,Cloud Build 使用了 默认使用 Cloud Build 专用服务账号,现在称为 用作 Cloud Build 旧版服务账号

此项变更生效后,Cloud Build 现在使用 Compute Engine 默认服务账号 用作默认服务账号

您的项目会受到什么影响取决于您是否参与了 组织:

  • 无组织的项目。如果您在 更改之后,该项目将使用Compute Engine 服务 account(针对使用 Cloud Build API 或 Google Cloud CLI。对于这些项目 来使用 Cloud Build 旧版服务账号,但可以使用 用户指定的服务账号

  • 属于组织的项目。如果您在 更改之后,该项目将使用Compute Engine 服务 account(针对使用 Cloud Build API 或 Google Cloud CLI。您可以使用用户指定的 服务账号,或者启用 贵组织的 Cloud Build 服务账号

  • 没有组织的现有项目。如果您在 更改之前,这个项目仍然会 旧行为,使用 Cloud Build 旧版服务 默认用于你的所有构建作业您可以继续使用用户指定的服务账号,方法是选择 Compute Engine 服务账号或创建自己的服务账号。

  • 已加入组织的现有项目。如果您在变更之前在项目中运行了首次构建,则该项目将继续采用旧行为,默认使用 Cloud Build 旧版服务账号。您还可以继续使用用户指定的服务 账号

  • 触发。您必须在创建集群时指定服务账号 更新触发器,除非默认服务账号 项目是 Cloud Build 旧版服务账号。

  • Cloud Build 服务账号名称:Cloud Build 将称为旧版 Cloud Build 服务账号

您需要做些什么?

如果您是某个组织的成员,则贵组织可以配置 设置一个组织政策,并指定其 所选限制条件。

贵组织可以通过设置以下组织政策布尔值限制条件来选择停用这些更改:

  • 未强制执行:constraints/cloudbuild.disableCreateDefaultServiceAccount
  • 未强制执行:constraints/cloudbuild.useComputeServiceAccount
  • 强制执行:constraints/cloudbuild.useBuildServiceAccount

如果您无法或不想调整组织政策,并且启用了 Cloud Build API 后 验证 Compute Engine 默认服务 账号您的用户创建的服务账号 为版本分配权限具体而言,提交 build 的用户必须 拥有相应服务的 iam.serviceAccounts.actAs 权限 。

新的组织政策限制条件

Cloud Build 引入了新的组织政策布尔值限制条件,用于配置以下内容:

  • 能够使用 Cloud Build 旧版服务账号。
  • 组织中所有项目的默认服务账号。

如需修改组织政策,您可以使用 Google Cloud 控制台或 Google Cloud CLI:

如需详细了解组织政策,请参阅组织政策服务简介

配置 Cloud Build 旧版服务账号的可用性

配置 Cloud Build 旧版服务的可用性 启用 Cloud Build API 后,Cloud Build 引入了以下布尔值政策限制条件:

  • 未强制执行:constraints/cloudbuild.disableCreateDefaultServiceAccount。 允许在新版 Play 商店中使用 Cloud Build 旧版服务账号 项目。

  • 已强制执行:constraints/cloudbuild.disableCreateDefaultServiceAccount。 停用新版 Cloud Build 旧版服务账号 项目。这是限制条件的默认值。

此约束条件仅会影响在变更发布后运行其首次 build 的项目。如果您决定不强制执行此政策约束条件,则对于在该配置生效时运行其首次 build 的所有项目,此更改将是永久性的。您无法在之前使用过该服务账号的项目中关闭 Cloud Build 旧版服务账号的使用。然而,即使服务 账号可用,您可以禁止组织中的用户使用此账号, 如以下部分所述。

与所有组织政策和限制条件一样,您可以在以下位置设置这些政策: 组织级或项目级。

为组织配置默认服务账号

要配置在组织中使用哪个默认服务账号,请执行以下操作: Cloud Build 推出了两个新的政策布尔值 约束条件

  • constraints/cloudbuild.useBuildServiceAccount:配置 Cloud Build 旧版服务账号的使用。
  • constraints/cloudbuild.useComputeServiceAccount:配置 Compute Engine 默认服务账号

这些政策可以彼此独立配置,但 在下列情况下合并强制执行规则时非常有用:

  • 为二者使用 Compute Engine 默认服务账号 手动提交的 build 和触发的 build。设置以下内容 组织政策中的以下限制:

    • 未强制执行:constraints/cloudbuild.useBuildServiceAccount
    • 已强制执行:constraints/cloudbuild.useComputeServiceAccount
  • 无论是手动提交的 build 还是触发的 build,都使用用户指定的服务账号。这通常是最安全的选项。设置 组织政策的以下限制:

    • 未强制执行:constraints/cloudbuild.useBuildServiceAccount
    • 未强制执行:constraints/cloudbuild.useComputeServiceAccount
  • 继续使用 Cloud Build 旧版服务账号。如果您 设置以下约束条件: 组织政策:

    • 未强制执行:constraints/cloudbuild.disableCreateDefaultServiceAccount
    • 未强制执行:constraints/cloudbuild.useComputeServiceAccount
    • 强制执行:constraints/cloudbuild.useBuildServiceAccount
  • 对于在变更之前启用了 Cloud Build API 的项目,请继续使用 Cloud Build 旧版服务账号;对于新项目,请开始使用 Compute Engine 默认服务账号。请确保您 了解所涉及的安全权衡,设置以下限制条件 :

    • 强制执行:constraints/cloudbuild.disableCreateDefaultServiceAccount
    • 已强制执行:constraints/cloudbuild.useComputeServiceAccount
    • 已强制执行:constraints/cloudbuild.useBuildServiceAccount

获取项目的当前默认服务账号

如需确定 Cloud Build 将哪个服务账号用作项目的默认服务账号,您可以使用 Google Cloud CLI 或 Cloud Build API:

gcloud CLI

运行以下命令以获取当前服务账号的默认服务账号 项目:

gcloud builds get-default-service-account

Cloud Build API

使用 cURL 调用 Cloud Build API:

curl -X GET -H "Authorization: Bearer $(gcloud auth print-access-token)" \
     https://cloudbuild.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/defaultServiceAccount

将占位值替换为以下内容: