首页/开发/CI/CD 与发布速查/流水线生成 SBOM
流水线设计54 条

流水线生成 SBOM

构建时生成软件物料清单(SPDX/CycloneDX)并与制品同存:满足安全审计、许可证盘点与供应链溯源需求。

CI/CD 与发布速查开发更新于 2026-10-13

流水线生成 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)才有意义,游离文件无法溯源。
生成放进构建流水线最可靠:手动补生成的文件容易与制品脱节。

落地要点

  • 生成步骤放进构建流水线,与镜像构建同一作业完成
  • 清单上传制品库,与镜像版本号关联
  • 定期抽样验证:随机挑版本确认清单可检索可解析
  • 漏洞比对半自动:新披露漏洞先按清单圈定影响面
选定一种主格式,另一种按需转换:避免两套工具链各自演进。

易错点

  • SBOM 与制品分开管理:版本对不上,审计时无法证明对应关系
  • 只生成不消费:没有扫描与比对流程的 SBOM 只是合规摆设
  • 格式选型无人统一:SPDX 与 CycloneDX 混用,工具链对接成本翻倍
  • 只扫应用层漏掉基础镜像:镜像级扫描一次到位,避免组件缺口
  • 构建结束即销毁清单:没归档的 SBOM 等于没生成,产物必须随制品保存

数据来源与参考

  • SPDX 规范
  • CycloneDX 规范
  • syft 文档(Anchore)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌