
sbom-tools 上手指南3 条命令拿到你的第一份 SBOM【免费下载链接】sbom-toolsA tools named sbom-tools, designed for generating the sbom file.项目地址: https://gitcode.com/openeuler/sbom-tools上次处理漏洞通报我们要把容器镜像里的库一个个手工列出来——镜像里没有成分表谁也说不清里面装了哪些版本的库。sbom-tools 是 openEuler 社区的 SBOM 生成与依赖分析工具集它能把容器镜像或本地项目扫描一遍自动输出一份列出全部组件及其许可证的软件物料清单SBOM。工具链全景sbom-tools 仓库是一套开源 SBOM 工具合集里面其实装着三个模块分工很明确syft 负责扫描容器镜像和本地目录来生成 SBOMortOSS Review Toolkit负责解析源码项目的依赖树并做许可证合规检查sbom-tracer 基于 eBPF 在构建过程中实时追踪依赖下载行为。先看这张表建立谁干什么的心智模型组件核心职责典型命令syft从容器镜像或本地目录生成 SBOMsyft alpine:latestort项目依赖分析、许可证合规检查ort analyze -i ./projectsbom-tracer构建过程依赖下载实时追踪sbom_tracer -s make build上图是 ort 组件在 CI 环境里跑 analyze → scan → evaluate 流水线的过程各阶段的分工一眼就能看明白。一条命令生成 SBOM从零拿到首份结果最短路径就一条 syft 命令它拉取 alpine:latest 镜像把里面所有包扫出来结果写到当前目录的 sbom.json。syft alpine:latest -o jsonsbom.json这就是你的第一份 SBOM——打开 sbom.json 能看到镜像里每个包的版本和许可证熟悉之后一次 SBOM 生成只要一分钟。如果还没装 syft先 clone 项目三个模块都在里面git clone https://gitcode.com/openeuler/sbom-tools然后按平台选一种安装方式sbom-tools 安装本身很轻量Linux / macOSclone 后运行自带的安装脚本sh sbom-generator/install.sh -b /usr/local/binmacOS Homebrewbrew install syftort 从源码构建在 sbom-ort 目录执行docker build -t ort .需要 Dockersbom-tracer执行bash sbom-tracer/install.sh仅支持 Linux需要 root三个高频场景实操容器镜像、本地目录、格式转换装好 sbom-tools 后按下面三个场景走一遍输出都是可直接归档的文件。手头是一个容器镜像。syft 扫描容器镜像生成 SBOM敲syft docker.io/library/nginx:1.25 -o cyclonedx-jsonnginx.cdx.json得到 CycloneDX 格式的 SBOM每个包的版本、许可证、所属镜像层都写在结果文件里。手头是一个本地项目目录。敲syft dir:. -o jsonproject-sbom.json扫完当前目录输出 project-sbom.json包含项目里找到的全部库及其许可证。手头是一份 syft 格式的 SBOM下游工具却要 CycloneDX。敲syft convert project-sbom.json -o cyclonedx-jsonproject.cdx.json转换不需要重新扫描项目结果写进 project.cdx.json。把 SBOM 接进 CI/CD 与合规流程第一件事是让 CI 在每次推送时自动生成 SBOM 并归档下面这个 GitHub Actions workflow 做的就是这件事name: Generate SBOM on: [push] jobs: sbom: runs-on: ubuntu-latest steps: - uses: actions/checkoutv3 - name: Generate SBOM run: | brew install syft syft dir:. -o jsonsbom.json - uses: actions/upload-artifactv3 with: {name: sbom, path: sbom.json}一共 13 行把扫描路径换成你自己的项目目录就能用。第二件事是许可证合规检查由 sbom-tools 的核心组件 ort 分三步完成analyze解析项目的依赖关系产出 analyzer-result.ymlscanner识别每个依赖的许可证产出 scan-result.ymlevaluator按你的策略判定并标出违规项假设前面已构建好 ort 镜像依次执行docker run -v $(pwd):/project ort analyze -i /project -o /project/ort/analyzer docker run -v $(pwd):/project ort scanner -i /project/ort/analyzer/analyzer-result.yml -o /project/ort docker run -v $(pwd):/project ort evaluator -i /project/ort/scan-result.yml -o /project/ort这就是 evaluate 阶段的产出样子GPL-3.0 这类 copyleft 违规会被点名列出。想细化 syft 的扫描范围和输出可看 sbom-generator/README.md 里的 .syft.yaml 配置说明想实时捕获构建实际下载了什么可看 sbom-tracer/README.md 的 eBPF 追踪方案。踩坑速查使用 sbom-tools 最常碰到的三个问题都是一条命令的事私有镜像扫描报 401/403——syft 默认读取本机 Docker 凭证私有仓库没登录过。先跑一次docker login registry.example.com再扫描就通了。本地目录扫描太慢、条目太多——原因是 node_modules、vendor 这类大目录被扫进来了。给命令加上--exclude ./node_modules/** --exclude ./vendor/**即可。大镜像扫描超时——默认逐层扫描加上--scope sq-only只扫压平后的最终层耗时会明显下降。收尾什么时候用 sbom-tools只需要一份组件清单syft 一条命令就够还要许可证合规结论就走 ort 三步流程想盯住构建过程实际下载了什么再上 sbom-tracer。三个模块的文档就放在这里随时可以翻sbom-generator READMEsbom-ort READMEsbom-tracer README【免费下载链接】sbom-toolsA tools named sbom-tools, designed for generating the sbom file.项目地址: https://gitcode.com/openeuler/sbom-tools创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考