spdx/ntia-conformance-checker

GitHub: spdx/ntia-conformance-checker

验证 SPDX 软件物料清单是否符合 NTIA、CISA 等法规标准最低要求的合规检查工具。

Stars: 82 | Forks: 21

# NTIA 一致性检查器 [![Build Status](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/de7b84587e023746.svg)](https://github.com/spdx/ntia-conformance-checker/actions) ![CodeQL](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/865fed5751023750.svg) [![PyPI version](https://img.shields.io/pypi/v/ntia-conformance-checker.svg)](https://pypi.org/project/ntia-conformance-checker/) [![Pylint Score](https://img.shields.io/badge/pylint-10/10-green)](https://github.com/spdx/ntia-conformance-checker) [![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/spdx/ntia-conformance-checker/badge)](https://scorecard.dev/viewer/?uri=github.com/spdx/ntia-conformance-checker) [![OpenSSF Best Practices](https://www.bestpractices.dev/projects/10727/badge)](https://www.bestpractices.dev/projects/10727) [![DOI](https://zenodo.org/badge/DOI/10.5281/zenodo.17068669.svg)](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, 上游代理, 二进制发布, 依赖关系分析, 安全合规检测, 开源工具, 文档结构分析, 无后门, 最小元素集, 标准化验证, 硬件无关, 组件透明度, 网络安全, 跌倒检测, 软件物料清单, 逆向工具, 隐私保护