SemClone/ossbomer
GitHub: SemClone/ossbomer
基于 profile 的 SBOM 校验与合规工具,一次性完成结构有效性、法规合规性和许可证策略三类检查。
Stars: 0 | Forks: 0
# ossbomer
基于 profile 的 SBOM 校验、合规性以及针对 SPDX 和 CycloneDX 的许可证策略。
大多数 SBOM 工具只回答一个问题。ossbomer 一次性回答三个:
- 文档是否结构有效,是否根据其声明的规范版本进行判定?
- 它是否包含了特定法规要求的字段,且符合该法规的严重程度?
- 根据您发布此软件的方式,策略是否允许其声明的许可证?
您只需选择一个 profile,它是一个绑定这三者的 YAML 文件。因此,“此 SBOM 是否符合 EU CRA”只需一个参数即可判定,而无需运行三次工具和查看电子表格。
它内置了十二个 profile,涵盖 NTIA、CISA 2025、EU CRA、BSI TR-03183、India CERT-In、OpenChain Telco、FedRAMP、AIBOM 以及四个许可证用例。
完整文档:**https://semclone.github.io/ossbomer/**
## 安装
需要 Python 3.9 或更高版本;已测试至 3.13。
```
pip install "ossbomer[oslc]"
```
`oslc` 额外依赖会引入 [ospac](https://pypi.org/project/ospac/),它用于评估许可证策略。每个 `license-*` profile 都需要它。如果您只需要 schema 和合规性检查,直接使用 `pip install ossbomer` 即可。
从 0.1.4 版本升级是一个破坏性变更:该版本早于 profile 引擎推出,且其附带的按层执行的命令现在表现已不同。请参阅[更新日志](https://github.com/SemClone/ossbomer/blob/main/CHANGELOG.md)。
## 使用
```
ossbomer validate --profile ntia-min-elements --file sbom.json
```
```
============================================================
Profile: NTIA Minimum Elements for an SBOM
Verdict: FAIL (4 MUST violations)
Quality score: 63 / 100
Completeness: 63
Accuracy: 41
Consistency: 75
Provenance: 68
Freshness: 70
Top issues:
1. Freshness: ntia-timestamp — rfc3339_utc: '2010-01-29T18:30:22' lacks a UTC/timezone designator [document]
2. Completeness: ntia-unique-identifier — present: field is absent or empty [components[0]:glibc@2.11.1]
3. Completeness: ntia-unique-identifier — present: field is absent or empty [components[2]:Saxon@8.8]
============================================================
```
`--profile` 可以重复使用,每个 profile 都会独立评估并得出各自的结论和评分。它们之间不会进行平均计算,因为优秀的 NTIA 评分并不能说明其具备 CRA 的就绪状态。
输出格式可以是 `console`、`json` 或 `sarif`。退出代码可用作 CI 门禁:如果没有失败则为 0,如果某个 profile 失败则为 1,如果文件无法读取则为 2。整个过程不会进行任何网络调用。
## 格式
| 格式 | 版本 | JSON | XML | Tag-value | YAML |
| ------ | -------- | ---- | --- | --------- | ---- |
| CycloneDX | 1.3 - 1.6 | yes | yes | not applicable | no such serialization |
| SPDX | 2.2, 2.3 | yes | yes | yes | yes |
| SPDX | 3.0 | structural only | no official schema | not applicable | no |
校验会遵循文档声明的版本,使用 `cyclonedx-python-lib` 和 `spdx-tools`,而不是内置的 schema。
## 文档
| | |
| --- | --- |
| [入门指南](https://semclone.github.io/ossbomer/getting-started) | 安装并读取结果 |
| [Profiles](https://semclone.github.io/ossbomer/guide/profiles) | 目录以及编写您自己的 profile |
| [许可证策略](https://semclone.github.io/ossbomer/guide/license-policy) | 用例、SPDX 表达式、覆盖 |
| [在 CI 中使用](https://semclone.github.io/ossbomer/guide/ci) | 构建门禁、SARIF 和代码扫描 |
| [结论和退出代码](https://semclone.github.io/ossbomer/reference/verdicts) | 检查结果如何转化为最终答案 |
| [CLI 参考](https://semclone.github.io/ossbomer/reference/cli) | 所有命令和标志 |
## 许可证
Apache License 2.0。请参阅
[LICENSE](https://github.com/SemClone/ossbomer/blob/main/LICENSE)。
标签:Python, SBOM, 开源许可证, 无后门, 硬件无关, 逆向工具