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, 上游代理, 云安全监控, 合规工具, 开源合规, 无后门, 版权信息, 知识产权, 硬件无关, 自动化合规, 许可证合规, 请求拦截, 跌倒检测, 软件物料清单, 逆向工具, 静态分析