跳转到主要内容

一款帮助创建和交互SBOM(软件物料清单)的工具集,可丰富许可和版权信息,并检查开源许可合规性

项目描述

合规助手

Test suites REUSE status The latest version of Compliance Assistant can be found on PyPI. Information on what versions of Python Compliance Assistant supports can be found on PyPI.

合规助手 是一个综合工具集,旨在帮助创建和管理软件物料清单(SBOM)。它可以帮助丰富SBOM的许可和版权信息,并使用来自 ClearlyDefined 的数据检查开源许可合规性。

功能

  • SBOM生成:从指定的代码仓库自动生成CycloneDX SBOM。
  • SBOM丰富化:使用ClearlyDefined数据,通过详细的许可和版权信息增强现有的SBOM。
  • SBOM解析:从CycloneDX SBOM中提取特定信息。
  • 许可和版权信息检索:从ClearlyDefined中检索单个软件包的许可和版权详情。
  • 许可合规性支持:从SBOM中提取和统一许可,建议可能的许可输出候选者。

以下功能中的一些是由flict、cdxgen和syft等优秀程序实现的,如flictcdxgensyft

要求

  • Python 3.10+
  • 访问ClearlyDefined服务的互联网连接
  • 至少一个SBOM生成器

安装

通过pipx安装和运行(推荐)

pipx使安装和运行Python程序变得更加容易,并避免与其他包冲突。使用以下命令安装它

pip3 install pipx

以下单行命令既安装又运行此程序,来自PyPI

pipx run compliance-assistant

如果您想在每次使用时都不用前置pipx run来使用compliance-assistant,可以像这样全局安装它

pipx install compliance-assistant

然后,compliance-assistant将在~/.local/bin中可用,这必须添加到您的$PATH中。

之后,请确保~/.local/bin已添加到您的$PATH中。在Windows上,您的环境所需的路径可能看起来像%USERPROFILE%\AppData\Roaming\Python\Python310\Scripts,具体取决于您安装的Python版本。

要升级compliance-assistant到最新可用版本,请运行此命令

pipx upgrade compliance-assistant

其他安装方法

您还可以使用纯pippoetry安装此软件包。

使用

合规性助手提供多个命令来简化不同的任务。每个命令都是通过带有特定选项的compliance-assistant命令行界面调用的。

根据您的具体安装方法,这可能是以下之一

# Run via pipx
pipx run compliance-assistant
# Installation via pipx or pip
compliance-assistant
# Run via poetry
poetry run compliance-assistant

在以下内容中,我们将仅使用compliance-assistant

命令结构

compliance-assistant <command> [<subcommand>] [subcommand-options]

命令

请运行compliance-assistant --help以获取命令和全局选项的概述。

对于每个命令,您都可以获取详细选项,例如compliance-assistant sbom enrich --help

示例

  • 使用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工作流程运行

您还可以使用GitHub工作流程定期生成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

开发和贡献

我们欢迎对合规性助手进行改进的贡献。请阅读CONTRIBUTING.md以获取所有信息。

许可证

本存储库的内容根据Apache 2.0许可授权。

可能包含在不同但兼容的许可下或来自不同版权所有者的组件。项目符合REUSE规范,这使得这些部分透明。您将在LICENSES目录中找到所有使用的许可。

本项目由OpenRail协会启动。欢迎您贡献

项目详情


下载文件

下载适用于您平台文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码分布

compliance_assistant-1.0.0.tar.gz (30.3 kB 查看散列)

上传时间 源代码

构建分布

compliance_assistant-1.0.0-py3-none-any.whl (37.6 kB 查看散列)

上传时间 Python 3

由以下支持