首页/云/Docker 容器速查/构建溯源声明与 SBOM 附加信息
镜像与构建107 条

构建溯源声明与 SBOM 附加信息

buildx 支持随镜像推送构建溯源(provenance)与依赖清单(SBOM)声明,用于供应链审计与镜像来源追踪。

Docker 容器速查云更新于 2026-10-13

什么是构建溯源与 SBOM

buildx(BuildKit)在构建时可以把构建溯源(provenance)与软件物料清单(SBOM)作为 attestation 附加到镜像索引上。溯源记录镜像由哪个构建器、用什么参数、从哪个源码提交构建而来;SBOM 列出镜像内包含的软件包与版本。两者都只是随镜像分发的元数据,不改变镜像运行方式,但让制品来源可以被核对。

基本信息

适用平台Docker Buildx / BuildKit(Docker 20.10 起广泛可用)
构建参数--provenance=true / --sbom=true
取值--provenance=mode=min|max,max 记录更完整
查看方式docker buildx imagetools inspect <ref>
前提推送到的镜像仓库需支持 OCI attestation

典型使用场景

  • 合规流水线要求制品可溯源:构建同时产出证据,而不是事后补文档
  • 上线前用 SBOM 核对基础镜像与第三方依赖版本,判断已知漏洞影响面
  • 被问到某个线上镜像对应哪次提交、由谁构建时,直接查溯源声明
  • 镜像来源存在争议时,作为签名之外的第二类客观证据
  • 安全审计阶段批量导出 SBOM,统计全量镜像的依赖分布

构建与核对示例

构建与核对示例
# 推送时附加溯源与 SBOM 声明
docker buildx build --provenance=true --sbom=true \
  --push -t registry.example.com/team/app/web:1.4.2 .
# 记录更完整的构建参数,便于事后审计
docker buildx build --provenance=mode=max \
  --push -t registry.example.com/team/app/web:1.4.2 .
# 在远端核对:输出里会列出索引附带的 attestation 清单
docker buildx imagetools inspect registry.example.com/team/app/web:1.4.2
docker buildx imagetools inspect registry.example.com/team/app/web:1.4.2 --raw | head -c 400  # 看原始索引 JSON

三类声明对照

名称内容典型用途
provenance构建器、构建参数、源码提交等构建过程记录制品溯源与合规留痕
SBOM镜像内软件包与版本清单依赖梳理、漏洞影响面判断
attestation承载以上声明的清单对象随镜像存储并被校验
attestation 是附着在镜像索引上的独立清单,推送到不支持的仓库时会丢失;核对要在推送之后的远端做,不能只看本机 docker images。
多平台构建时声明随各自平台清单保存,查看输出可按平台定位到对应条目。
BuildKit 默认生成最小化溯源;mode=max 会额外记录构建参数与来源依赖,体积略大但审计价值更高,合规场景建议直接用 max 并写进流水线模板。

易错点

  • 本地镜像存储不一定能看到 attestation,核对必须在远端用 imagetools inspect,或按仓库界面查看
  • 为简化配置随手 --provenance=false 关闭溯源,合规流水线会失去这层证据,且事后无法补做
  • SBOM 只在构建阶段生成,镜像推上去之后再想补只能重建重推
  • --provenance 的取值形式随 buildx 版本演进,升级构建器后先确认参数仍被接受,别照抄旧脚本
  • 仓库不支持 attestation 时声明会在推送环节被丢弃,上线前先用一个测试镜像验证声明确实被保留

数据来源与参考

  • Docker 官方文档:build attestations(provenance 与 SBOM)(docs.docker.com/build)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌