OpenRailAssociation/compliance-assistant

GitHub: OpenRailAssociation/compliance-assistant

开源许可证合规辅助工具,支持 SBOM 生成、信息丰富化与合规检查的一站式解决方案

Stars: 6 | Forks: 4

- [Compliance Assistant](#compliance-assistant) - [功能](#features) - [环境要求](#requirements) - [安装](#installation) - [使用](#usage) - [开发与贡献](#development-and-contribution) - [许可证](#license) ## 功能 - **SBOM 生成**:从指定的代码仓库自动生成 CycloneDX SBOM。 - **SBOM 丰富**:使用 ClearlyDefined 数据通过详细的许可和版权信息增强现有 SBOM。 - **SBOM 解析**:从 CycloneDX SBOM 中提取特定信息。 - **许可证和版权信息检索**:从 ClearlyDefined 获取单个软件包的许可和版权详细信息。 - **许可证合规支持**:从 SBOM 提取并统一许可证,建议可能的对外许可证候选 其中一些功能得益于 [flict](https://github.com/vinland-technology/flict)、[cdxgen](https://github.com/CycloneDX/cdxgen) 和 [syft](https://github.com/anchore/syft/) 等优秀程序。 ## 环境要求 - Python 3.10+ - 用于访问 ClearlyDefined 服务的互联网连接 - 至少一个 SBOM 生成器: - [syft](https://github.com/anchore/syft/) - [cdxgen](https://github.com/CycloneDX/cdxgen) - [Docker](https://www.docker.com/),用于使用容器化的 cdxgen 生成 SBOM ## 安装 ### 通过 pipx 安装并运行(推荐) [pipx](https://pypa.github.io/pipx/) 使安装和运行 Python 程序变得更容易,并避免与其他包冲突。使用以下命令安装它 ``` pip3 install pipx ``` 以下单行命令可以从 [PyPI](https://pypi.org/project/compliance-assistant/) 安装并运行此程序: ``` pipx run compliance-assistant ``` 如果您希望能够使用 compliance-assistant 而无需每次都在前面加上 `pipx run`,请像这样全局安装它: ``` pipx install compliance-assistant ``` 然后 compliance-assistant 将在 `~/.local/bin` 中可用,该路径必须添加到您的 `$PATH` 中。 之后,请确保 `~/.local/bin` 在您的 `$PATH` 中。在 Windows 上,根据您安装的 Python 版本,环境所需路径可能类似于 `%USERPROFILE%\AppData\Roaming\Python\Python310\Scripts`。 要将 compliance-assistant 升级到最新可用版本,请运行以下命令: ``` pipx upgrade compliance-assistant ``` ### 其他安装方法 您也可以使用纯 `pip` 或 `poetry` 来安装此包。 ## 使用 Compliance Assistant 提供了多个命令来促进不同的任务。每个命令都通过带有特定选项的 `compliance-assistant` 命令行接口调用。 根据您的具体安装方法,这可能类似于以下之一 ``` # 通过 pipx 运行 pipx run compliance-assistant # 通过 pipx 或 pip 安装 compliance-assistant # 通过 poetry 运行 poetry run compliance-assistant ``` 在下文中,我们将仅使用 `compliance-assistant`。 ### 命令结构 ``` compliance-assistant [] [subcommand-options] ``` ### 命令 请运行 `compliance-assistant --help` 以获取命令和全局选项的概览。 对于每个命令,您可以获取详细的选项,例如:`compliance-assistant sbom enrich --help`。 ### 示例 * 使用 [syft](https://github.com/anchore/syft/) 为当前目录创建 SBOM:`compliance-assistant sbom generate -g syft -d . -o /tmp/my-sbom.json` * 使用 ClearlyDefined 数据丰富 SBOM:`compliance-assistant sbom enrich -f /tmp/my-sbom.json -o /tmp/my-enriched-sbom.json` * 从 SBOM 中提取特定数据:`compliance-assistant sbom parse -f /tmp/my-enriched-sbom.json -e purl,copyright,name` * 收集单个软件包的 ClearlyDefined 许可/版权信息:`compliance-assistant clearlydefined fetch -p pkg:pypi/inwx-dns-recordmaster@0.3.1` * 获取在丰富的 SBOM 中发现的所有许可证:`compliance-assistant licensing list -f /tmp/my-enriched-sbom.json -o plain` * 基于 SBOM 中的许可证获取对外许可证候选:`compliance-assistant licensing outbound -f /tmp/my-enriched-sbom.json` ### 作为 GitHub workflow 运行 您也可以使用 GitHub workflow 定期生成 SBOM,例如在每次发布版本时: ``` name: Generate and enrich SBOM on: release: types: [published] jobs: # Generate the SBOM with syft and enrich the generated SBOM sbom-generate-and-enrich: runs-on: ubuntu-22.04 needs: sbom-gen steps: # Install compliance-assistant - name: Set up Python uses: actions/setup-python@v5 with: python-version: "3.12" cache: "pip" - name: Install compliance-assistant run: pip install compliance-assistant # Install syft - run: mkdir -p ~/.local/bin - name: Install syft run: curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b ~/.local/bin # Generate SBOM with syft via compliance-assistant - name: Generate SBOM with syft run: poetry run compliance-assistant sbom generate -g syft -d . -o ${{ runner.temp }}/sbom-raw.json # Enrich SBOM with compliance-assistant - name: Enrich SBOM run: compliance-assistant sbom enrich -f ${{ runner.temp }}/sbom-raw.json -o ${{ runner.temp }}/sbom-enriched.json # Upload enriched SBOM as artifact - name: Store enriched SBOM as artifact uses: actions/upload-artifact@v4 with: name: sbom-enriched path: ${{ runner.temp }}/sbom-enriched.json ``` ## 开发与贡献 我们欢迎通过贡献来改进 Compliance Assistant。请阅读 [CONTRIBUTING.md](./CONTRIBUTING.md) 获取所有信息。 ## 许可证 本仓库的内容根据 [Apache 2.0 许可证](https://www.apache.org/licenses/LICENSE-2.0) 授权。 可能存在使用不同但兼容的许可证或来自不同版权持有者的组件。该项目符合 REUSE 规范,这使得这些部分透明化。您将在 [LICENSES](./LICENSES/) 目录中找到所有使用的许可证。 该项目由 [OpenRail Association](https://openrailassociation.org) 发起。欢迎您[参与贡献](./CONTRIBUTING.md)!
标签:ClearlyDefined, CycloneDX, DevSecOps, Python, SBOM, 上游代理, 云安全监控, 合规工具, 开源合规, 无后门, 版权信息, 知识产权, 硬件无关, 自动化合规, 许可证合规, 请求拦截, 跌倒检测, 软件物料清单, 逆向工具, 静态分析