本页面介绍了如何通过将 Binary Authorization 配置为仅允许部署由 Cloud Build 构建的容器映像来保护软件供应链。
您可以通过在 Binary Authorization 政策中要求提供 built-by-cloud-build 证明者来配置此部署控制。当您运行生成映像的构建时,Cloud Build 会自动在项目中创建 built-by-cloud-build 证明者。成功构建映像后,Cloud Build 会自动为其签名并创建证明。在部署时,Binary Authorization 使用 built-by-cloud-build 证明者验证证明。可以部署通过验证的映像。不允许部署未通过验证的映像,并且会将失败情况记录到 Cloud Audit Logs。
如需查看介绍如何使用 Cloud Build 记录的元数据和 Binary Authorization 的端到端指南,请参阅使用签名来源和 Binary Authorization。
准备工作
如需使用此功能,您必须先执行以下操作:
配置政策
在本部分中,您将配置 Binary Authorization 政策以要求提供 built-by-cloud-build 证明者。
如需仅允许部署 Cloud Build 构建的映像,请执行以下步骤:
控制台
- 前往 Google Cloud 控制台中的 Binary Authorization 页面: 
- 在政策标签页中,点击修改政策。 
- 在修改政策对话框中,选择只允许已被以下所有证明者批准的映像。 
- 点击添加证明者。 
- 在添加证明者对话框中,执行以下操作: - 选择根据项目和证明者名称添加并执行以下步骤:- 在项目名称字段中,输入在其中运行 Cloud Build 的项目。
- 点击证明者名称字段,可看到 built-by-cloud-build证明者可用。
- 点击 built-by-cloud-build。
 
- 或者,您也可以选择根据证明者资源 ID 添加。在证明者资源 ID 中,输入以下内容: - projects/PROJECT_ID/attestors/built-by-cloud-build- 将 - PROJECT_ID替换为运行 Cloud Build 的项目。
 
- 选择根据项目和证明者名称添加并执行以下步骤:
- 点击添加 1 个证明者 (Add 1 attestor)。 
- 点击保存政策。 
gcloud
- 使用以下命令将现有政策导出到一个文件中: - gcloud container binauthz policy export > /tmp/policy.yaml
- 修改政策文件。 
- 修改以下规则之一: - defaultAdmissionRule
- clusterAdmissionRules
- istioServiceIdentityAdmissionRules
- kubernetesServiceAccountAdmissionRules
 
- 如果还没有 - requireAttestationsBy块,请将其添加到规则中。
- 在 - requireAttestationsBy块中,添加以下内容:- projects/PROJECT_ID/attestors/built-by-cloud-build- 将 - PROJECT_ID替换为运行 Cloud Build 的项目。
- 保存政策文件。 
- 导入政策文件。 - gcloud container binauthz policy import /tmp/policy.yaml- 以下是包含对 - built-by-cloud-build-attestor的引用的示例政策文件:- defaultAdmissionRule: evaluationMode: REQUIRE_ATTESTATION enforcementMode: ENFORCED_BLOCK_AND_AUDIT_LOG requireAttestationsBy: - projects/PROJECT_ID/attestors/built-by-cloud-build name: projects/PROJECT_ID/policy- 将 - PROJECT_ID替换为运行 Cloud Build 的项目的项目 ID。
后续步骤
- 您可以使用试运行模式来记录违反政策情况,而不是禁止部署映像。
- 在 Google Kubernetes Engine (GKE) 或 Cloud Run 上查看被禁止的映像的审核日志事件。