Halfblood-Prince/trustcheck-action

GitHub: Halfblood-Prince/trustcheck-action

在 CI 中自动运行 TrustCheck,评估 PyPI 包的供应链信任信号并阻断高风险依赖。

Stars: 1 | Forks: 0

# TrustCheck GitHub Action [![PyPI](https://img.shields.io/pypi/v/trustcheck)](https://pypi.org/project/trustcheck/) [![Python](https://img.shields.io/pypi/pyversions/trustcheck)](https://pypi.org/project/trustcheck/) [![License](https://img.shields.io/badge/license-Custom-red)](LICENSE) 在 GitHub Actions 中运行 [TrustCheck](https://github.com/Halfblood-Prince/trustcheck),以在安装、推广或批准 PyPI 包之前评估其信任状况。 此操作是对核心 `trustcheck` CLI 的轻量级封装。它会安装 CLI 并在工作流中运行 `trustcheck inspect`,以便在 CI 期间展示来源、发布者、仓库、漏洞以及与策略相关的信号。 ## 为何使用 TrustCheck 传统的依赖检查通常只回答“此包是否已知存在漏洞?” TrustCheck 帮助回答更早期的问题,例如: - 此发布版本是否具有已验证的来源? - 已证明的发布者详细信息是否指向预期的仓库和工作流? - 声明的仓库 URL 是否与已证明的证据一致? - 是否存在应阻止采用的漏洞记录或更高风险的信任信号? 核心 CLI 将 PyPI 元数据、来源可用性、加密证明验证、已信任发布者身份提示、仓库匹配、发布版本漂移信号以及漏洞记录整合到单个报告中。 ## 此操作的作用 当前,此操作: 1. 从 PyPI 安装 `trustcheck` 2. 运行 `trustcheck inspect ` 3. 如果 CLI 以非零状态退出,则使工作流步骤失败 这使得在 GitHub Actions 中引入 TrustCheck 成为一种简便方式,同时将繁重的工作保留在核心项目中。 ## 快速开始 ``` name: TrustCheck Scan on: pull_request: workflow_dispatch: jobs: trustcheck: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Inspect package with TrustCheck uses: Halfblood-Prince/trustcheck-action@v1 with: package: requests ``` ## 输入 | 名称 | 必需 | 描述 | | --- | --- | --- | | `package` | 是 | 要检查的 PyPI 包名 | ## 示例用例 在拉取请求期间审查包: ``` name: Dependency Trust Check on: pull_request: jobs: trustcheck: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Inspect requests uses: Halfblood-Prince/trustcheck-action@v1 with: package: requests ``` 按需运行检查: ``` name: Manual TrustCheck on: workflow_dispatch: jobs: trustcheck: runs-on: ubuntu-latest steps: - name: Inspect sampleproject uses: Halfblood-Prince/trustcheck-action@v1 with: package: sampleproject ``` ## 核心 CLI 可评估的内容 根据核心 TrustCheck 文档,`trustcheck inspect` 可以评估: - 来自 PyPI 的项目与发布元数据 - 声明的仓库 URL - 发布工件的来源信封 - 针对工件摘要的证明验证 - 已信任发布者身份详情,例如仓库和工作流 - 预期的仓库匹配 - 发布者仓库与工作流之间的漂移 - 选定版本的漏洞记录 - 供操作人员和自动化使用的文本或 JSON 输出 核心项目中的推荐等级包括 `verified`、`metadata-only`、`review-required` 和 `high-risk`。 ## 关于此操作的重要说明 当前的 GitHub Action 故意保持最小化。它仅公开 `package` 输入并运行默认的 `trustcheck inspect` 命令。 如果需要核心项目中记录的更高级 TrustCheck 行为,例如: - `--version` - `--expected-repo` - `--strict` - `--policy` 或 `--policy-file` - `--format json` - `--verbose` - `--config-file` - `--cache-dir` 或 `--offline` 请直接在工作流中使用核心 CLI,或扩展此操作以将这些标志作为额外输入暴露出来。 ## 建议的高级工作流 如果希望立即实施更严格的策略,请直接安装并运行 CLI: ``` name: Verify Dependency Trust on: pull_request: workflow_dispatch: jobs: trustcheck: runs-on: ubuntu-latest steps: - uses: actions/setup-python@v6 with: python-version: "3.12" - name: Install TrustCheck run: python -m pip install --upgrade pip trustcheck - name: Inspect pinned release with strict policy run: | trustcheck inspect sampleproject \ --version 4.0.0 \ --expected-repo https://github.com/pypa/sampleproject \ --strict ``` ## 退出行为 根据核心 CLI 文档: - `0` 表示成功 - `1` 表示上游 PyPI 或网络故障 - `2` 表示命令用法错误 - `3` 表示无效响应或内部处理失败 - `4` 表示策略失败 在 CI 中,策略失败非常有用:这意味着 TrustCheck 已正确运行并有意根据所选策略阻止了该包。 ## 文档 - 核心项目:https://github.com/Halfblood-Prince/trustcheck - 文档:https://halfblood-prince.github.io/trustcheck/ - PyPI 包:https://pypi.org/project/trustcheck/ ## 许可证 本仓库在“TrustCheck Action Personal Use License”下以来源可用方式授权。 在 GitHub Action Use Exception 包含于 [LICENSE](LICENSE) 的条件下,允许在流程中使用官方的 `Halfblood-Prince/trustcheck-action` GitHub Action。 该例外适用于在流程中使用官方操作。它不授予广泛复制、修改、重新分发、再许可或在此上下文之外重新发布本仓库源代码的权利。
标签:CI, GitHub Action, PyPI, TrustCheck, 代码审核, 信任信号, 发布者验证, 发布证明, 可信发布, 安全扫描, 工作流, 开源框架, 持续集成, 时序注入, 结构化查询, 自动化安全, 软件供应链, 软件供应链完整性, 逆向工具