实验:容器镜像证明
动手实验:为容器镜像添加供应链元数据。使用 BuildKit 生成 SBOM 和 SLSA 来源证明,使用 Cosign 为镜像签名,并附加 OpenVEX 声明以说明漏洞的可利用状态。
证明你的容器镜像来自何处,以及它们未被 篡改。本实验将带你使用 BuildKit 生成 SBOM 和 SLSA 构建 来源证明,使用 Cosign 为镜像签名,并编写 VEX 声明来说明哪些 CVE 会影响你的镜像——这些正是用于 满足 NIST SSDF 和 EO 14028 等供应链安全要求的技术。
启动实验
-
Start the labspace:
$ docker compose -p labspace -f oci://dockersamples/labspace-attestation-basics up -d -
Open your browser to http://localhost:3030.
-
When you're done, tear down the labspace:
$ docker compose -p labspace down
你将学到什么
完成本 Labspace 后,你将掌握以下内容:
- 使用
--sbom=true生成并检查附加到容器镜像上的 SPDX SBOM - 使用
--provenance=mode=max生成 SLSA 构建来源证明,并理解多阶段构建是如何被完整记录的 - 安装 Cosign 并使用基于密钥的签名方式为容器镜像签名和验签
- 编写 OpenVEX 声明来说明 CVE 的可利用状态,并将其作为签名证明附加到镜像
- 理解 SBOM、来源证明、签名和 VEX 如何在完整的供应链叙事中相辅相成
模块
| # | 模块 | 说明 |
|---|---|---|
| 1 | 引言 | 供应链证明概览与示例 Go 应用介绍 |
| 2 | 软件物料清单(SBOM) | 使用 --sbom=true 构建、检查 SPDX 内容,并理解与扫描器的集成 |
| 3 | 构建来源证明 | 生成 SLSA 来源证明,并探究多阶段构建是如何被记录的 |
| 4 | 使用 Cosign 为镜像签名 | 生成密钥对、为镜像签名、验证签名,并了解无密钥签名 |
| 5 | VEX 声明 | 扫描 CVE、编写 OpenVEX 文档,并将其作为签名证明附加 |
| 6 | 融会贯通 | 运行完整的构建—签名—证明工作流,纵览完整的供应链全貌 |
| 7 | 回顾 | 技能总结,以及策略强制执行和更高 SLSA 等级的后续步骤 |