除非您替换此行为,否则 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 服务帐号。这是约束条件的默认值。
如需更新政策限制条件,请更新强制执行规则:
选择
constraints/cloudbuild.disableCreateDefaultServiceAccount
,并在 Google Cloud 控制台中将强制执行选项设置为开启或关闭,或者
此限制条件仅影响在变更发布后启用 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
将占位符值替换为以下内容:
PROJECT_ID
:项目的 ID。REGION
:支持的区域之一。