spdx/ntia-conformance-checker
GitHub: spdx/ntia-conformance-checker
验证 SPDX 软件物料清单是否符合 NTIA、CISA 等法规标准最低要求的合规检查工具。
Stars: 82 | Forks: 21
# NTIA 一致性检查器
[](https://github.com/spdx/ntia-conformance-checker/actions)

[](https://pypi.org/project/ntia-conformance-checker/)
[](https://github.com/spdx/ntia-conformance-checker)
[](https://scorecard.dev/viewer/?uri=github.com/spdx/ntia-conformance-checker)
[](https://www.bestpractices.dev/projects/10727)
[](https://doi.org/10.5281/zenodo.17068669)
根据 NTIA、CISA 和其他最低元素要求验证 SPDX SBOM。
该工具用于确定 [SPDX](https://spdx.dev/) 软件物料清单 (SBOM) 文档是否包含特定规范要求的信息项。
该工具的网页版(无需安装)可通过以下地址访问:
## 一致性
目前支持的规范包括:
- 2021 年国家电信和信息管理局 (NTIA) ["最低元素"][ntia]。
- 2024 年 CISA 软件组件透明度框架 (FSCT3) ["最低预期"][fsct3]。
最低元素包括:
- 供应商名称
- 组件名称
- 组件版本
- 其他唯一标识符
- 依赖关系
- SBOM 数据作者
- 时间戳
根据 NTIA 的定义,最低元素是“支持基本 SBOM 功能的关键部分,并将作为软件透明度不断演进方法的基础。”
除了与 NTIA 最低元素类似的信息外,FSCT3 还要求以下基线属性作为其“最低预期”的一部分:
- 许可证
- 版权持有人(在版权声明中)
映射:
- NTIA 元素所需数据字段与 SPDX 2.3 规范的映射可以在[这里][ntia-spdx23]找到。
- FSCT3 基线属性与 ISO/IEC 5962:2021 (SPDX 2.2.1) 和 SPDX 3.0 的映射可在 FSCT3 文档的第 2.5 节中找到。
- 关于 SBOM 要求及其与 SPDX 映射的更多比较,可以在 OpenChain Japan SBOM 子工作组的 Takashi Ninjouji 于 2024-12-05 SPDX General Meeting 上展示的[这张幻灯片][sbom-reqs]中找到。
## 安装
此工具需要 Python 3.10 或更高版本。
其依赖项可能需要更新版本的 Python。
*安装方法 #1*:
使用 `pip` 从 [Python Package Index (PyPI)][pypi] 安装。
```
pip install ntia-conformance-checker
```
*安装方法 #2*:从本地源码安装。
使用以下命令克隆仓库并安装依赖项:
```
git clone https://github.com/spdx/ntia-conformance-checker.git
cd ntia-conformance-checker
pip install .
```
建议使用虚拟环境,特别是当您使用多个 Python 版本工作时。
`virtualenv` 是一个用于创建隔离 Python 环境的工具;
它允许您将项目的依赖项保留在单个环境中,
或者创建单独的环境以便使用不同的 Python 版本进行测试。
## CLI 用法
```
usage: sbomcheck [OPTIONS] FILE
FILE Filepath for SBOM input
Options:
-h, --help show this help message and exit
-s, --sbom-spec {spdx2,spdx3}
SBOM specification of the input file; see below for details [default: spdx2]
-c, --comply {fsct3-min,ntia}
Compliance standards to check against; see below for details [default: ntia]
--skip-validation Skip validation
-r, --output {html,json,print,quiet}
Type of compliance report output; see below for details [default: print]
-o, --output-file PATH
Filepath for compliance report output; if omitted, prints to console
-v, --verbose Print more information (debug)
-V, --version Display version of sbomcheck
choices:
SBOM specifications (for --sbom-spec):
spdx2 Software Package Data Exchange (SPDX) 2.x
spdx3 System Package Data Exchange (SPDX) 3.x
Compliance standards (for --comply):
fsct3-min 2024 CISA Framing Software Component Transparency (minimum expectation)
ntia 2021 NTIA SBOM Minimum Elements
Report output types (for --output):
html Report in HTML format
json Report in JSON format
print Print report to console
quiet No output unless there are errors
Examples:
sbomcheck sbom.spdx
sbomcheck -s spdx3 -c fsct3-min -v sbom.json
sbomcheck sbom.yaml --output json --output-file report.json
```
用户可以随后分析特定文件:
```
sbomcheck sbom.json
```
要以机器可读的 JSON 格式生成输出,请运行:
```
sbomcheck sbom.spdx --output json
```
要分析 SPDX 3 JSON 文件,请运行:
```
sbomcheck sbom.json --sbom-spec spdx3
```
使用 `-h` 获取帮助:
```
sbomcheck -h
```
## 作为库使用
`ntia-conformance-checker` 也可以作为库导入。例如:
```
from ntia_conformance_checker import SbomChecker
sbom_checker = SbomChecker("SBOM_filepath")
print(sbom_checker.compliant)
```
请参阅 API 文档:
更多属性和方法可以在 [`base_checker.py`](ntia_conformance_checker/base_checker.py) 的 `BaseChecker` 类中找到。
针对特定规范的特定属性和方法可以在该规范的检查器中找到。例如,[`ntia_checker.py`](ntia_conformance_checker/ntia_checker.py) 中的 `NTIAChecker` 类。
## 在线使用
使用 SPDX Online Tool,您无需安装 Python 包即可检查 SBOM 一致性。
访问此页面: 。
## HTML 输出
HTML 输出被组织为四个不同的 div 块,
每个块都有一个特定的 CSS 类,便于样式设置和定位:
- 错误(解析等):`
`
- 一致性结果:`
`
- 缺少所需信息的组件:`
`
- 详细验证信息:`
`
## 历史
- 本项目是 [@linynjosh][] 在 2022 年 [Google Summer of Code (GSoC)][gsoc] [贡献][gsoc2022]的成果。
- [v4.0.0][] 版本中提供的 SPDX 3 支持和改进的 FSCT3 检查器,是 [@bact][] 的 [GSoC 2025 贡献][gsoc2025]。
- 本项目由 SPDX 采用者和爱好者社区维护。
- 查看 SPDX 参与 Google Summer of Code (GSoC) 的情况:
。
## 许可证
[Apache-2.0](./LICENSE)
## 依赖项
- [spdx-tools](https://pypi.org/project/spdx-tools/) 用于解析 SPDX 2 SBOM。
- [spdx-python-model](https://pypi.org/project/spdx-python-model/) 用于解析 SPDX 3 SBOM。
## 支持
- 在此提交问题、疑问或反馈
- 加入讨论: 和
## 贡献
非常欢迎贡献!请参阅 [CONTRIBUTING.md](./CONTRIBUTING.md)
了解如何为代码库做出贡献的说明。
## 更多帮助
请查看 [常见问题](./FAQ.md) 文档。
标签:CISA合规, DevSecOps, Linux安全, NTIA合规, Python, SBOM, SBOM验证, SPDX, 上游代理, 二进制发布, 依赖关系分析, 安全合规检测, 开源工具, 文档结构分析, 无后门, 最小元素集, 标准化验证, 硬件无关, 组件透明度, 网络安全, 跌倒检测, 软件物料清单, 逆向工具, 隐私保护