除非您替换此行为,否则 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
:支持的区域之一。