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, 开源许可证, 无后门, 硬件无关, 逆向工具