Attestations(证明)
Docker Hardened Images(DHI)和 chart 包含全面、已签名的安全证明,用于验证镜像的构建过程、内容和安全态势。这些证明是安全软件供应链实践的核心部分,帮助用户验证镜像是否可信且符合策略。
What is an attestation?(什么是证明?)
证明是一份已签名的声明,提供关于镜像或 chart 的可验证信息,例如它是如何构建的、其中包含什么内容,以及它通过了哪些安全检查。证明通常使用 Sigstore 工具(如 Cosign)签名,使其具有防篡改性和加密可验证性。
证明遵循标准化格式(如 in-toto、CycloneDX 和 SLSA),并作为符合 OCI 规范的元数据附加到镜像或 chart 上。它们可以在镜像构建期间自动生成,或手动添加以记录额外的测试、扫描结果或自定义来源。
Why are attestations important?(为何证明很重要?)
证明通过以下方式提供对软件供应链的关键可见性:
- 记录进入镜像的内容(例如 SBOM)
- 验证它是如何构建的(例如构建来源)
- 捕获它已通过或失败的安全扫描(例如 CVE 报告、密钥扫描、测试结果)
- 帮助组织强制执行合规和安全策略
- 支持运行时信任决策和 CI/CD 策略门禁
它们对于满足 SLSA 等行业标准至关重要,并通过使构建和安全数据透明且可验证,帮助团队降低供应链攻击的风险。
How Docker Hardened Images and charts use attestations(Docker Hardened Images 和 chart 如何使用证明)
所有 DHI 和 chart 都使用 SLSA Build Level 3 实践构建,并且每个镜像变体都发布时附带一整套已签名的证明。这些证明允许用户:
- 验证镜像或 chart 是在安全环境中从受信任来源构建的
- 以多种格式查看 SBOM 以了解组件级细节
- 查看扫描结果以检查漏洞或嵌入的密钥
- 确认每个镜像的构建和部署历史
证明会自动发布并与每个 DHI 和 chart 关联。它们可以使用 Docker Scout 或 Cosign 等工具检查,并可被 CI/CD 工具或安全平台消费。
Image attestations(镜像证明)
虽然每个 DHI 变体都包含一组证明,但证明可能因镜像变体而异。例如,某些镜像可能包含 STIG 扫描证明。下表列出了可能随 DHI 一起提供的证明;实际集合因镜像变体而异。要查看特定镜像变体有哪些证明可用(包括具体的 predicate type URI),请使用 Docker Scout:
$ docker scout attest list dhi.io/<image>:<tag>
更多详情,请参阅 Verify image attestations。
| 证明类型 | 描述 |
|---|---|
| CycloneDX SBOM | CycloneDX 格式的软件物料清单,列出组件、库和版本。 |
| STIG scan | STIG 扫描结果,输出为 HTML 和 XCCDF 格式。 |
| CVEs (In-Toto format) | 基于包和发行版扫描、影响镜像组件的已知漏洞(CVE)列表。 |
| VEX | Vulnerability Exploitability eXchange (VEX) 文档,识别不适用于该镜像的漏洞并解释原因(例如不可达或不存在)。 |
| Scout provenance | 由 Docker Scout 生成的来源元数据,包括源 Git commit、构建参数和环境细节。 |
| Scout SBOM | 由 Docker Scout 生成并签名的 SBOM,包含额外的 Docker 特定元数据。 |
| Secrets scan | 针对意外包含的密钥(如凭据、令牌或私钥)的扫描结果。 |
| Tests | 针对镜像运行的自动化测试记录,例如功能检查或验证脚本。 |
| Virus scan | 对镜像层执行的防病毒扫描结果。详情请参阅 Malware scanning。 |
| CVEs (Scout format) | 由 Docker Scout 生成的漏洞报告,列出已知 CVE 和严重性数据。 |
| SLSA provenance | 标准的 SLSA 来源声明,描述镜像的构建方式,包括构建工具、参数和来源。 |
| SLSA verification summary | 表明镜像符合 SLSA 要求的摘要证明。 |
| SPDX SBOM | SPDX 格式的 SBOM,在开源生态系统中被广泛采用。 |
| FIPS compliance | 验证镜像使用经过 FIPS 140 验证的加密模块的证明。 |
| DHI Changelog | 跨版本对镜像所做更改的记录。 |
| DHI Image Sources | 链接到包含构建镜像所用全部材料的相应源镜像,包括包源代码、Git 仓库和本地文件,确保符合开源许可证要求。 |
Package attestations(包证明)
除了镜像级证明外,Docker 加固包还包含它们自己的证明。这些包级证明为镜像中的各个包提供来源和构建信息,让你可以细粒度地追踪供应链。
包证明包含与镜像证明类似的信息,例如 SLSA 来源,显示每个包是如何构建的以及使用了哪些材料。你可以从镜像的证明中提取包信息,然后递归检索包自身的证明。
有关如何访问和验证包证明的详细说明,请参阅 Package attestations。
Helm chart attestations(Helm chart 证明)
Docker Hardened Image(DHI)chart 还包含全面的已签名证明,为你的 Kubernetes 部署提供透明度和验证。与 DHI 容器镜像一样,这些 chart 遵循 SLSA Build Level 3 实践构建,并包含广泛的安全元数据。
DHI Helm chart 包含以下证明。要查看这些证明的具体 predicate type URI,请使用 Docker Scout:
$ docker scout attest list dhi.io/<chart>:<version>
更多详情,请参阅 Verify Helm chart attestations。
| 证明类型 | 描述 |
|---|---|
| CycloneDX SBOM | CycloneDX 格式的软件物料清单,列出 chart 本身以及 chart 引用的所有容器镜像和工具。 |
| CVEs (In-Toto format) | 影响 chart 引用的容器镜像和组件的已知漏洞(CVE)列表。 |
| Scout provenance | 由 Docker Scout 生成的来源元数据,包括 chart 源仓库、使用的构建镜像和构建参数。 |
| Scout SBOM | 由 Docker Scout 生成并签名的 SBOM,包含 chart 及其引用的容器镜像,并带有额外的 Docker 特定元数据。 |
| Secrets scan | 对 chart 包中意外包含的密钥(如凭据、令牌或私钥)的扫描结果。 |
| Tests | 针对 chart 运行的自动化测试记录,用于验证与所引用镜像的功能和兼容性。 |
| Virus scan | 对 chart 包执行的防病毒扫描结果。详情请参阅 Malware scanning。 |
| CVEs (Scout format) | 由 Docker Scout 生成的漏洞报告,列出 chart 引用镜像的已知 CVE 和严重性数据。 |
| SLSA provenance | 标准的 SLSA 来源声明,描述 chart 的构建方式,包括构建工具、源仓库、引用的镜像和构建材料。 |
| SPDX SBOM | SPDX 格式的 SBOM,列出 chart 及其引用的所有容器镜像和工具。 |
View and verify attestations(查看和验证证明)
要查看和验证证明,请参阅 Verify a Docker Hardened Image。
Add your own attestations(添加你自己的证明)
除了 Docker Hardened Images 提供的全面证明外,你还可以在构建派生镜像时添加自己的已签名证明。如果你在 DHI 之上构建新应用程序,并希望在你的软件供应链中保持透明度、可追溯性和信任,这尤其有用。
通过附加 SBOM、构建来源或自定义元数据等证明,你可以满足合规要求、通过安全审计,并支持 Docker Scout 等策略评估工具。
然后可以使用 Cosign 或 Docker Scout 等工具在下游验证这些证明。
要了解如何在构建过程中附加自定义证明,请参阅 Build attestations。