证明
Docker 硬化镜像 (DHI) 包含全面的、已签名的安全证明,用于验证镜像的构建过程、内容和安全态势。这些证明是安全软件供应链实践的核心组成部分,有助于用户验证镜像是否可信并符合策略。
什么是证明?
证明是一种已签名的声明,提供有关镜像的可验证信息,例如它是如何构建的、内部包含什么以及通过了哪些安全检查。证明通常使用 Sigstore 工具(例如 Cosign)进行签名,使其防篡改并可进行加密验证。
证明遵循标准化格式(如 in-toto、CycloneDX 和 SLSA),并作为符合 OCI 标准的元数据附加到镜像。它们可以在镜像构建期间自动生成,也可以手动添加以记录额外的测试、扫描结果或自定义来源。
为什么证明很重要?
证明通过以下方式为软件供应链提供关键可见性:
- 记录镜像中包含的*内容*(例如 SBOM)
- 验证其*构建方式*(例如构建来源)
- 捕获它通过或未通过的*安全扫描*(例如 CVE 报告、秘密扫描、测试结果)
- 帮助组织强制执行合规性和安全策略
- 支持运行时信任决策和 CI/CD 策略门
它们对于满足 SLSA 等行业标准至关重要,并通过使构建和安全数据透明和可验证来帮助团队降低供应链攻击的风险。
Docker 硬化镜像如何使用证明
所有 DHI 均使用 SLSA 构建级别 3 实践构建,每个镜像变体都发布了一整套已签名的证明。这些证明允许用户:
- 验证镜像是否在安全环境中从可信源构建
- 以多种格式查看 SBOM,以了解组件级详细信息
- 查看扫描结果,以检查漏洞或嵌入的秘密
- 确认每个镜像的构建和部署历史
证明会自动发布并与您的 Docker Hub 组织中每个镜像的 DHI 相关联。它们可以使用 Docker Scout 或 Cosign 等工具进行检查,并且可供 CI/CD 工具或安全平台使用。
可用证明
虽然每个 DHI 变体都包含一组证明,但证明可能会因镜像变体而异。例如,某些镜像可能包含 STIG 扫描证明。下表是 DHI 中可能包含的所有证明的完整列表。要查看特定镜像变体可用的证明,您可以在 Docker Hub 中查看镜像变体详细信息。
| 证明类型 | 描述 | 谓词类型 URI |
|---|---|---|
| CycloneDX SBOM | 一个采用 CycloneDX 格式的软件物料清单,列出了组件、库和版本。 | https://cyclonedx.org/bom/v1.5 |
| STIG 扫描 | STIG 扫描结果,输出为 HTML 和 XCCDF 格式。 | https://docker.com/dhi/stig/v0.1 |
| CVE(In-Toto 格式) | 根据包和分发扫描,列出影响镜像组件的已知漏洞 (CVE)。 | https://in-toto.io/attestation/vulns/v0.1 |
| VEX | 一份 漏洞可利用性交换 (VEX) 文档,用于识别不适用于镜像的漏洞并解释原因(例如,无法访问或不存在)。 | https://openvex.dev/ns/v0.2.0 |
| Scout 健康评分 | Docker Scout 提供的签名证明,总结了镜像的整体安全和质量状况。 | https://scout.docker.com/health/v0.1 |
| Scout 来源 | 由 Docker Scout 生成的来源元数据,包括源 Git 提交、构建参数和环境详细信息。 | https://scout.docker.com/provenance/v0.1 |
| Scout SBOM | 由 Docker Scout 生成和签名的 SBOM,包括额外的 Docker 特定元数据。 | https://scout.docker.com/sbom/v0.1 |
| 秘密扫描 | 意外包含的秘密(例如凭据、令牌或私钥)的扫描结果。 | https://scout.docker.com/secrets/v0.1 |
| 测试 | 针对镜像运行的自动化测试记录,例如功能检查或验证脚本。 | https://scout.docker.com/tests/v0.1 |
| 病毒扫描 | 对镜像层执行的防病毒扫描结果。 | https://scout.docker.com/virus/v0.1 |
| CVE(Scout 格式) | 由 Docker Scout 生成的漏洞报告,列出已知 CVE 和严重性数据。 | https://scout.docker.com/vulnerabilities/v0.1 |
| SLSA 来源 | 一个标准 SLSA 来源声明,描述了镜像的构建方式,包括构建工具、参数和来源。 | https://slsa.dev/provenance/v0.2 |
| SLSA 验证摘要 | 一份摘要证明,表明镜像符合 SLSA 要求。 | https://slsa.dev/verification_summary/v1 |
| SPDX SBOM | 一个采用 SPDX 格式的 SBOM,在开源生态系统中广泛采用。 | https://spdx.dev/Document |
| FIPS 合规性 | 一份证明,验证镜像是否使用 FIPS 140 验证的加密模块。 | https://docker.com/dhi/fips/v0.1 |
查看和验证证明
要查看和验证镜像的证明,请参阅验证 Docker 硬化镜像。
添加您自己的证明
除了 Docker 硬化镜像提供的全面证明外,您还可以在构建衍生镜像时添加自己的签名证明。如果您在 DHI 之上构建新应用程序,并且希望在软件供应链中保持透明度、可追溯性和信任,这将特别有用。
通过附加 SBOM、构建来源或自定义元数据等证明,您可以满足合规性要求,通过安全审计,并支持 Docker Scout 等策略评估工具。
然后,可以使用 Cosign 或 Docker Scout 等工具在下游验证这些证明。
要了解如何在构建过程中附加自定义证明,请参阅构建证明。