本页面介绍了如何通过将 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 上查看被禁止的映像的审核日志事件。