Binary Authorization 概览

本文档简要介绍了 Binary Authorization。

什么是 Binary Authorization?

Binary Authorization 是一款 Google Cloud 产品,可用于在开发和部署基于容器的应用时实施软件供应链安全措施。

Binary Authorization 的作用是什么?

您可以使用 Binary Authorization 执行以下操作:

Binary Authorization 支持哪些平台?

Binary Authorization 支持以下平台:

Binary Authorization 是部署架构的一部分,其中包括以下相关产品:

  • Artifact RegistryContainer Registry 和其他用于存储要部署的映像的注册表。
  • Artifact Analysis 提供了可与 Binary Authorization 搭配使用来控制部署的漏洞信息。Artifact Analysis 将单独存储在授权过程中使用的可信元数据。
  • 安全监控信息中心,可用于评估相互依赖的各个 Google Cloud 产品(包括 Binary Authorization)中的应用安全状况。
  • Cloud Build,生成 Binary Authorization 可用于强制执行和监控的证明和来源。
  • Cloud Deploy 是一项代管式持续交付服务,可按指定序列自动将应用交付到一系列目标环境。

Binary Authorization 基于 Kritis 规范,后者是 Grafeas 开源项目的一部分。

背景

软件供应链安全旨在确保根据内部的最佳做法和标准,软件源代码的来源、构建、测试、发布和部署。

借助基于容器的架构,团队可以开发高度分离的系统(例如基于微服务架构的系统),并鼓励使用短生命周期开发做法,包括持续集成 (CI) 和持续部署 (CD)。

在基于容器的开发环境中,映像可以部署在构成软件供应链的一系列集群(例如测试、预演和发布)中。

Binary Authorization 的目标是降低在此类环境中部署有缺陷、易受攻击或未经授权的软件的风险。借助此服务,您可以阻止部署映像,除非映像符合您定义的政策。

虽然 Binary Authorization 没有规定内部流程或最佳做法,但它可以限制未通过必需检查的映像的部署,帮助您强制执行您自己的做法。

生命周期

映像的部署生命周期可以包含以下阶段;其中,必须完成一个阶段,才能进入下一个阶段:

  1. 构建和单元测试
  2. 部署到开发环境中,其中的用户不会受到影响
  3. 部署到质量检查环境中,其中只有内部用户会受到影响
  4. 部署到 Canary 环境中,其中只有一部分外部用户会受到影响
  5. 部署到生产环境

每个阶段都可以有自己的部署环境(例如某个 GKE 集群或 Google Cloud 项目),还可以有其自己的在映像进入下一阶段之前必须满足的条件。Binary Authorization 支持您定义映像从一个阶段进入另一个阶段所依据的规则,并提供了强制执行这些规则的方法。

证明

最常见的 Binary Authorization 使用场景均涉及证明。证明用于证明特定映像已完成上一阶段(如前所述)。您可以将 Binary Authorization 政策配置为在允许部署映像之前验证证明。在部署时,Binary Authorization 无需重做在前面阶段已经完成的活动,只需要验证证明即可。

涉及证明的使用场景包括:

  • 构建验证,在此场景中,Binary Authorization 会使用证明来验证映像是由特定的构建系统还是持续集成 (CI) 流水线构建。

    如需了解如何根据 Cloud Build 设置可创建证明的持续集成流水线,请参阅 Cloud Build 集成

  • 漏洞扫描,在此场景中,Artifact Analysis 也会扫描 CI 构建的映像是否存在漏洞。在这种情况下,仅当已识别的漏洞满足漏洞签名政策时,才会创建证明。

    了解如何使用 VoucherKritis Signer 设置漏洞扫描 CI 流水线。

  • 手动检查,在此场景中,由某个人员(如质量检查代表)手动创建证明。

    如需了解如何手动创建证明,请参阅创建证明

如需查看端到端证明教程,请参阅 Google Cloud 控制台使用入门

特性

Binary Authorization 可提供:

  • 一个政策模型,用于描述映像满足哪些限制条件后才能部署
  • 一个证明模型,用于指定可证明或验证您环境中的必需流程是否已在部署前完成的可信授权方
  • 一个部署时强制执行程序,用于防止部署违反政策的映像

政策模型

Binary Authorization 实现了一个政策模型,其中的政策是一组规则,用于管理容器映像的部署。政策中的规则规定了映像在部署前必须满足的特定条件。

如需详细了解 Binary Authorization 政策模型和其他概念,请参阅主要概念

设置

如需设置 Binary Authorization,您必须先为构成部署和授权流水线的 Google Cloud 项目启用该服务。

接下来,您可以定义政策,指定可在满足哪些限制条件后部署容器映像。如果您的政策要求在部署之前提供证明,您还必须先设置可以验证证明的证明者,验证无误后才允许部署关联的映像。

如需设置 Binary Authorization,请参阅以下指南:

授权

在可以部署映像之前,任何必需的签名者都必须创建一个可以证实映像已准备好进入下一部署阶段的证明。证明是一条记录,其中包含映像的注册表路径和摘要,并且已使用签名者的加密私钥进行数字签名。

如需详细了解授权,请参阅使用证明

强制执行

部署映像时,Binary Authorization 会检查政策,并强制执行已找到的任何用于管理部署的规则。

如果映像满足政策中指定的限制条件,Binary Authorization 会允许部署该映像。否则,该服务会阻止部署,并将描述相应映像为何不符合规则的消息写入 Cloud Audit Logs 中。

如需在 Cloud Audit Logs 中查看 Binary Authorization 强制执行事件,请参阅以下指南:

如需详细了解部署,请参阅以下指南:

持续验证

使用基于检查的平台政策的持续验证 (CV) 是 Binary Authorization 的一项功能,用于定期检查与正在运行的 Pod 关联的容器映像的元数据,以确保持续性符合政策。

详细了解 CV

使用 VPC Service Controls 保护 Binary Authorization 的安全

VPC Service Controls 可帮助您降低未经授权从 Google 代管服务和资源中复制或转移数据的风险。

如需详细了解如何保护 Binary Authorization 相关资源,请参阅使用 VPC Service Controls 进行保护

Software Delivery Shield

Binary Authorization 是 Software Delivery Shield 解决方案的一部分。Software Delivery Shield 是一个全代管式端到端软件供应链安全解决方案,可帮助您改善开发者工作流和工具、软件依赖项、用于构建和部署软件的 CI/CD 系统以及 Google Kubernetes Engine 和 Cloud Run 等运行时环境的安全状况。如需了解如何将 Binary Authorization 与 Software Delivery Shield 的其他组件结合使用以改进软件供应链的安全状况,请参阅 Software Delivery Shield 概览

后续步骤