部署阶段概述

部署阶段是容器安全供应链(CSSC)框架的第四个阶段。 企业可以将容器映像部署到其托管环境,以运行容器化工作负荷,而无需验证这些容器映像的安全性和合规性。 这会增加潜在的安全风险,或者可能导致在托管环境中运行易受攻击或恶意代码。 应在部署时验证在上一阶段生成的容器映像元数据和证明。 这可确保部署符合企业范围的安全性和符合性策略。

Microsoft 的容器安全供应链(CSSC)框架确定需要以合规的方式部署映像。 CSSC 框架建议一组标准做法和工具,通过验证映像元数据并实施符合性策略来帮助安全地部署映像。 在本文中,你将了解可在 CSSC 框架的部署阶段中使用的目标、标准做法和工具。

背景

企业可以直接从外部或内部注册表部署容器映像,而无需验证容器映像是否不受漏洞影响,并获准使用。 将不受信任的和不合规的容器映像部署到托管环境会增加潜在的安全风险,或在托管环境中执行恶意软件或易受攻击的代码。

CSSC 框架做法有助于确保部署就绪的容器映像来自受信任的注册表、无漏洞和恶意软件,并确保真实性和完整性。 许多企业正在实施策略来验证容器映像的 SBOM 和签名,然后再将其部署到 Kubernetes,并持续扫描容器映像以验证扫描报告。

在“部署”阶段,我们专注于保护容器映像和部署环境。 部署使用容器映像签名、生命周期元数据、漏洞和恶意软件报告、SBOM 和从生成阶段生成的证明数据进行验证,以确保容器映像在部署到托管环境之前受信任且合规。

用于部署容器映像的工作流

部署阶段具有一个工作流,用于在全球数百个或数千个群集之间部署容器映像。 部署可以动态和按需进行。 生成、验证和签名容器映像后,CSSC 框架将提升容器映像,相关项目可用于在部署阶段的注册表之间分发。

  1. 实施映像完整性策略,在部署之前验证映像签名,以确保它们未被篡改并来自受信任的发布者。
  2. 实施漏洞扫描策略以扫描容器映像中是否存在漏洞、根据严重性级别(CRITICAL、HIGH、MEDIUM、LOW)设置阈值,并仅部署合规的映像。
  3. 实施许可证符合性策略,以强制限制使用不需要的许可证部署容器映像。
  4. 实施证明策略,以在部署之前验证容器映像是否来自受信任的源和存储库。
  5. 实施映像生命周期策略,以确保已部署的映像在支持和有效范围内,从而限制终止生命周期和终止支持映像的部署。
  6. 为每个映像生成和签名漏洞和恶意软件报告,以防止篡改和保护其完整性。
  7. 将签名的报表附加到容器映像,以便在部署期间进行可见性和符合性验证。
  8. 验证容器映像元数据,包括 SBOM、映像签名、漏洞报告、生命周期元数据和来源数据。
  9. 实施允许控制机制,以强制实施部署策略并限制不合规容器映像的部署。
  10. 使用 CI/CD 管道自动执行部署过程,集成映像验证和验证检查。
  11. 持续监视已部署的映像并强制实施符合性,以检测新漏洞、合规性偏差,并根据需要采取修正措施。
  12. 记录部署活动并定期进行审核,以确保遵守安全性和合规性标准。
  13. 实现自动化或手动修正过程来解决安全事件或合规性偏差。
  14. 记录部署过程,包括执行的步骤、使用的工具以及实现的任何安全措施,以供将来参考和审核。

Microsoft 建议在部署时验证映像元数据,并且仅从受信任的注册表部署容器映像。 建议使用以下做法来保护云本机工作负荷。

  • 强制实施部署策略来验证元数据并限制不合规的容器映像。 这可以防止未批准的映像被部署。
  • 在部署映像之前强制实施用于验证映像签名的部署策略。 这可确保用于部署的映像来自受信任的发布者,并且未被篡改。
  • 根据漏洞分数强制实施部署策略。 这可以防止部署具有高于特定阈值的漏洞的映像(严重、高、中、低)。
  • 强制实施用于验证生命周期信息的部署策略,以确保在部署中不使用支持终止映像。
  • 确保部署环境和平台具有安全的网络连接。
  • 需要严格的身份验证、访问控制和文件权限,以拒绝对部署平台的未经授权的访问。 这可以避免潜在的凭据泄露或未经授权的更改。
  • 在 CI/CD 管道中自动执行验证过程。

部署阶段的安全目标

为映像部署提供明确定义的工作流有助于企业提高其安全性,并减少容器供应链上的攻击面。 CSSC 框架的部署阶段旨在满足以下安全目标。

从受信任且合规的源部署映像

应在“部署”阶段实施安全策略,以验证容器映像是否来自受信任的源,并且不会篡改。 可以通过在部署之前验证容器映像签名来验证完整性和真实性。

实施允许控制安全策略

应在部署阶段实施安全策略,以验证容器映像是否符合要求。 为此,可以针对以下安全元数据验证容器映像:漏洞和恶意软件报告、映像签名、SBOM、映像生命周期元数据和来源元数据。

用于验证图像元数据并强制实施验证策略的工具和服务

批准 是一个开源项目,它使 Kubernetes 群集能够在部署之前验证安全元数据,并且仅允许符合允许策略的映像。 建议配置批准和 Gatekeeper,以仅允许在 Kubernetes 群集上运行受信任且合规的容器映像。

Gatekeeper 是一个开源和NCF项目,它提供动态允许控制器和策略引擎,以标准化方式定义、强制执行和审核 Kubernetes 群集上的策略。

Azure Policy 扩展了 Gatekeeper,允许跨Azure Kubernetes 服务群集应用内置策略,以审核或阻止引用外部注册表或不受信任的源的容器映像的部署。

用于附加图像元数据的工具

ORAS 是一个NCF项目,提供一种在符合 OCI 的注册表中存储和管理项目的方法。 ORAS 允许在符合 OCI 的注册表中存储和管理任何类型的项目,包括容器映像、映像元数据等。 它还提供一组命令行工具,方便与符合 OCI 的注册表进行交互。 建议使用 ORAS 将生成的漏洞和恶意软件报告、SBOM、映像生命周期元数据和来源元数据以及关联的映像一起推送到注册表。

用于签名和验证容器映像和元数据的工具

公证项目是一个开源项目,其中包含一组规范和工具,旨在通过签名和验证、签名可移植性和密钥/证书管理提供跨行业标准来保护软件供应链。 表示法 是由公证项目社区开发的供应链工具,支持在开放容器计划(OCI)兼容的注册表中签名和验证项目,从而实现签名可移植性和互操作性。 它还通过插件模型提供与第三方密钥管理解决方案的集成,可实现扩展性。 建议使用 Notary Project 工具对容器映像和元数据进行签名,以确保真实性和篡改。

后续步骤

请参阅 运行阶段 的概述,以安全地部署容器映像。