Cloud Build 服务账号变更

除非您替换此行为,否则 Cloud Build 会自动选择 Cloud Build 服务帐号来代表您执行构建。此服务帐号的权限可能对您的使用场景而言过于宽泛,例如访问您的 Cloud Source Repositories 和项目中的任何 Cloud Storage 存储桶

我们将更改 Cloud Build 在新项目中使用服务帐号的默认行为。我们会在 2024 年 5 月和 6 月几周内,按区域逐步推出这些更改。这些变更今后将改善客户的默认安全状况。您可以通过配置组织政策限制条件来选择拒绝这些更改。

您的项目会受到什么影响取决于您是否属于某个组织。一般来说,在更改发布到您正在使用的区域后,您将看到以下更改:

  • 无组织的项目。如果您在更改后为项目启用 Cloud Build API,则默认情况下,您将为使用 Cloud Build API 或 Google Cloud CLI 提交的构建使用 Compute Engine 服务帐号。这些项目无法选择使用旧版 Cloud Build 服务帐号,但可以使用用户指定的服务帐号

  • 具有组织的项目。如果您在更改后为项目启用 Cloud Build API,则默认情况下,您将为使用 Cloud Build API 或 Google Cloud CLI 提交的构建使用 Compute Engine 服务帐号。您可以使用用户指定的服务帐号,也可以通过在组织中启用 Cloud Build 服务帐号来选择拒绝此更改。

  • 无组织的现有项目。如果您在更改之前对项目启用了 Cloud Build API,则将继续采用旧行为,即默认为所有构建使用旧版 Cloud Build 服务帐号。您可以选择 Compute Engine 服务帐号或创建自己的服务帐号,以继续使用用户指定的服务帐号

  • 属于某个组织的现有项目。如果您在更改之前对项目启用了 Cloud Build API,则您将默认使用旧版 Cloud Build 服务帐号继续旧行为。您也可以继续使用用户指定的服务帐号

  • 触发。除非您项目的默认服务帐号是旧版 Cloud Build 服务帐号,否则您必须在创建或更新触发器时指定服务帐号。

  • API。如果启用 Cloud Build API,系统也会启用 Identity and Access Management API。

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

您需要做些什么?

如果您属于某个组织,则可以通过设置以下组织政策布尔值限制条件来选择拒绝此项变更:

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

如果您无法或不想调整组织政策,并且在更改发布后启用了 Cloud Build API,请验证 Compute Engine 默认服务帐号用户创建的服务帐号是否对您的构建具有足够的权限。具体而言,提交 build 的用户必须拥有服务帐号的 iam.serviceAccounts.actAs 权限。

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

为了帮助您在启用 Cloud Build API 时配置旧版 Cloud Build 服务帐号的可用性,Cloud Build 将引入以下布尔值政策限制条件

  • 未强制执行:constraints/cloudbuild.disableCreateDefaultServiceAccount。允许在新项目中将旧版 Cloud Build 服务用作默认服务。

  • 已强制执行:constraints/cloudbuild.disableCreateDefaultServiceAccount。 禁止在新项目中使用旧版 Cloud Build 服务帐号。这是约束条件的默认值。

如需更新政策限制条件,请更新强制执行规则:

此限制条件仅影响在变更发布后启用 Cloud Build API 的项目。如果您决定不强制执行政策限制条件,则对于启用该 API 的所有项目,当该配置处于活动状态时,此更改将是永久性的。您无法关闭旧版 Cloud Build 服务帐号在之前可用的项目中的可用性。

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

如需确定 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

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