仅部署由 Cloud Build 构建的映像

本页面介绍了如何通过将 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 构建的映像,请执行以下步骤:

控制台

  1. 转到 Google Cloud 控制台中的 Binary Authorization 页面:

    转到 Binary Authorization

  2. 政策标签页中,点击修改政策

  3. 修改政策对话框中,选择只允许已被以下所有证明者批准的映像

  4. 点击添加证明者

  5. 添加证明者对话框中,执行以下操作:

    1. 选择根据项目和证明者名称添加并执行以下步骤:
      1. 项目名称字段中,输入在其中运行 Cloud Build 的项目。
      2. 点击证明者名称字段,可看到 built-by-cloud-build 证明者可用。
      3. 点击 built-by-cloud-build
    2. 或者,您也可以选择根据证明者资源 ID 添加。在证明者资源 ID 中,输入以下内容:

      projects/PROJECT_ID/attestors/built-by-cloud-build
      

      PROJECT_ID 替换为运行 Cloud Build 的项目。

  6. 点击添加 1 个证明者 (Add 1 attestor)。

  7. 点击保存政策

gcloud

  1. 使用以下命令将现有政策导出到一个文件中:

    gcloud container binauthz policy export > /tmp/policy.yaml
    
  2. 修改政策文件。

  3. 修改以下规则之一:

    • defaultAdmissionRule
    • clusterAdmissionRules
    • istioServiceIdentityAdmissionRules
    • kubernetesServiceAccountAdmissionRules
  4. 如果还没有 requireAttestationsBy 块,请将其添加到规则中。

  5. requireAttestationsBy 块中,添加以下内容:

    projects/PROJECT_ID/attestors/built-by-cloud-build
    

    PROJECT_ID 替换为运行 Cloud Build 的项目。

  6. 保存政策文件。

  7. 导入政策文件。

    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。

后续步骤