流水线生成 SBOM 是什么
构建时生成软件物料清单(SPDX/CycloneDX)并与制品同存:满足安全审计、许可证盘点与供应链溯源需求。工具覆盖容器镜像、目录与语言生态多个层面,产出常用 JSON 或 Tag-Value。关键不是「生成了一份文件」,而是清单与制品版本(digest)绑定,并被后续流程真正消费。盘点对象要覆盖直接与间接依赖,镜像场景还要包含系统包。
基本信息
| 生成工具 | syft、cdxgen、trivy、各语言生态插件 |
|---|---|
| 常见格式 | SPDX、CycloneDX(JSON 或 Tag-Value) |
| 归档 | 作为流水线制品随版本保存,或推入制品库元数据 |
| 绑定 | 清单标注制品 digest 或版本,脱开制品无溯源意义 |
| 消费 | 漏洞比对、许可证盘点、发布审计取证 |
典型使用场景
- 合规交付:向客户或审计提供制品对应的物料清单
- 漏洞响应:新漏洞披露时按清单快速定位受影响版本
- 许可证盘点:上线前核对依赖许可证类型
- 镜像追溯:按 digest 查询镜像包含的全部组件
- 供应链审计:比对两次构建的清单差异发现异常引入
syft 生成
syft 生成
syft packages registry.example.com/app:1.8.0 -o spdx-json > sbom.spdx.json
# 同时输出 CycloneDX:
syft packages dir:. -o cyclonedx-json > sbom.cdx.json链路四环节
| 环节 | 动作 | 产物 |
|---|---|---|
| 生成 | 构建后对制品跑扫描 | SPDX 或 CycloneDX 清单 |
| 绑定 | 记录制品 digest 与版本 | 清单元数据 |
| 归档 | 随制品入库保存 | 可检索的记录 |
| 消费 | 扫描比对与查询 | 漏洞与许可证报告 |
SBOM 要绑定具体制品版本(digest)才有意义,游离文件无法溯源。
生成放进构建流水线最可靠:手动补生成的文件容易与制品脱节。
落地要点
- 生成步骤放进构建流水线,与镜像构建同一作业完成
- 清单上传制品库,与镜像版本号关联
- 定期抽样验证:随机挑版本确认清单可检索可解析
- 漏洞比对半自动:新披露漏洞先按清单圈定影响面
选定一种主格式,另一种按需转换:避免两套工具链各自演进。