Microsoft SBOM工具CLI使用完全指南
什么是SBOM工具
SBOM(Software Bill of Materials,软件物料清单)工具是一款由微软开发的开源命令行工具,用于自动生成和验证符合SPDX 2.2/3.0标准的软件物料清单。该工具能够扫描项目文件和依赖项,生成详细的软件组件清单,帮助开发者和企业更好地管理软件供应链安全。
工具安装
SBOM工具提供跨平台支持,可根据不同操作系统下载对应的可执行文件:
| 操作系统 | 可执行文件名 | 生成的SBOM文件名 |
|---|---|---|
| Windows | sbom-tool-win-x64.exe | win-x64-manifest.spdx.json |
| Linux | sbom-tool-linux-x64 | linux-x64-manifest.spdx.json |
| MacOS | sbom-tool-osx-x64 | osx-x64-manifest.spdx.json |
下载后无需安装,直接运行即可使用。
基础使用场景
生成SBOM文件
假设我们有一个.NET项目,项目源代码位于c:\Users\test\TestProject,构建输出在c:\outputDrop目录。
- 首先构建项目:
dotnet build --output c:\outputDrop
- 生成SBOM:
./sbom-tool-win-x64.exe generate \
-b c:\outputDrop \ # 构建输出目录
-bc c:\Users\test\TestProject \ # 项目源代码目录
-pn TestProject \ # 项目名称
-pv 1.0.0 \ # 项目版本
-ps MyCompany \ # 项目供应商
-nsb http://mycompany.com # 命名空间基础URI
执行成功后,SBOM文件将默认生成在c:\outputDrop\_manifest\spdx_2.2\manifest.spdx.json路径。
参数说明
-b(BuildDropPath):必需参数,指定构建输出目录-bc(BuildComponentPath):必需参数,指定项目源代码目录-pn(PackageName):必需参数,指定项目名称-pv(PackageVersion):必需参数,指定项目版本-ps(PackageSupplier):必需参数,指定项目供应商-nsb(NamespaceUriBase):必需参数,指定命名空间基础URI
高级使用技巧
自定义SBOM输出位置
默认情况下,SBOM文件会生成在构建输出目录的_manifest子目录下。如需指定其他位置:
./sbom-tool-win-x64.exe generate ... -m c:\sboms
SBOM将生成在c:\sboms\_manifest\spdx_2.2\manifest.spdx.json。
启用详细日志
添加-V Verbose参数可获取详细日志输出:
./sbom-tool-win-x64.exe generate ... -V Verbose
扫描Docker镜像依赖
SBOM工具支持扫描Docker镜像中的依赖项:
./sbom-tool-win-x64.exe generate ... -di testImage:0.0.1
支持同时扫描多个镜像:
./sbom-tool-win-x64.exe generate ... -di testImage:0.0.1,ubuntu:1.9
排除特定目录扫描
使用-cd参数可以排除特定目录不被扫描:
./sbom-tool-win-x64.exe generate ... -cd "--DirectoryExclusionList **/bin/**"
支持多个排除规则:
./sbom-tool-win-x64.exe generate ... -cd "--DirectoryExclusionList **/bin/** --DirectoryExclusionList **/obj/**"
记录执行日志
将执行日志输出到指定文件:
./sbom-tool-win-x64.exe generate ... -t c:\telemetry
SBOM文件验证
生成SBOM后,可使用工具进行验证:
./sbom-tool-win-x64.exe validate \
-b c:\outputDrop \ # 构建输出目录
-o c:\validationOutputPath\output.json \ # 验证结果输出路径
-mi SPDX:2.2 # 指定SPDX版本
支持SPDX 2.2和3.0两种格式验证。
自定义SBOM位置验证
如果SBOM不在默认位置:
./sbom-tool-win-x64.exe validate ... -m c:\sboms\_manifest
常见问题解决
权限问题
如果遇到写入权限错误,建议:
- 检查目标目录权限设置
- 尝试将输出目录改为外部存储设备
- 联系系统管理员获取帮助
典型错误信息:
## [error]Encountered an error while generating the manifest.
## [error]Error details: Could not find file `c:\outputDrop\_manifest\spdx_2.2\manifest.spdx.json`.
参数缺失
确保所有必需参数都已提供,特别是-nsb命名空间基础URI参数。如果未提供,工具会生成一个默认的符合SPDX规范的URI。
最佳实践建议
- 将SBOM生成作为构建流程的一部分
- 为每个版本生成唯一的SBOM文件
- 将SBOM文件与构建产物一起存储
- 定期验证SBOM文件的完整性和准确性
- 使用有意义的命名空间URI,便于追踪
通过遵循这些指南,您可以充分利用SBOM工具来增强软件供应链的可视性和安全性。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考



