craevidence/cli

GitHub: craevidence/cli

CRA Evidence CLI 是一款帮助团队在本地和 CI/CD 流水线中执行欧盟网络弹性法案合规检查的命令行工具。

Stars: 0 | Forks: 0

# CRA Evidence CLI [![PyPI](https://img.shields.io/pypi/v/craevidence)](https://pypi.org/project/craevidence/) [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/17/175afcf0318795acd517b918edbabb25d87a2bc2e3a9c5542f0b01fa1d5c338c.svg)](https://github.com/craevidence/cli/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/github/license/craevidence/cli)](https://github.com/craevidence/cli/blob/main/LICENSE) [![Python 3.12+](https://img.shields.io/badge/python-3.12%2B-blue)](https://github.com/craevidence/cli/blob/main/docs/installation.md) [![Docker pulls](https://img.shields.io/docker/pulls/craevidence/cli)](https://hub.docker.com/r/craevidence/cli) 用于 [CRA Evidence](https://craevidence.com) 工作流和本地软件供应链检查的命令行工具。 ![craevidence check 扫描 SBOM 并根据已知的漏洞利用情况控制 CI 门禁](https://static.pigsec.cn/wp-content/uploads/repos/cas/ff/ffbcbe6464fe95a106cc4e442807a9cba56d8660bdf6067f5d5d12ccf1163c29.gif) CLI 有两种模式: - 无需 CRA Evidence 账号或 API 密钥即可运行的本地命令。 - 从 CRA Evidence 上传证据或读取发布状态的账号命令。 本页涵盖了公共命令的基础知识。完整的参考文档位于 [docs/](https://github.com/craevidence/cli/blob/main/docs/README.md)。 已注册的 CRA Evidence 用户也可以登录查看命令 文档,网址为 https://docs.craevidence.com/cli。 本地检查是审查辅助工具和 CI 门禁。它们不是审计,并且 退出码为 0 并不能证明合规。 ## 安装 ``` pip install craevidence pipx install craevidence ``` `pipx` 非常适合用于安装命令行工具,因为它将包安装在 隔离的环境中。 安装的命令是: ``` craevidence --help ``` 需要 Python 3.12 或更高版本。Docker 镜像及其他安装选项 详见[安装指南](https://github.com/craevidence/cli/blob/main/docs/installation.md)。 ## 文档 | 页面 | 内容 | |---|---| | [本地命令](https://github.com/craevidence/cli/blob/main/docs/local-commands.md) | `check`、`eol-check`、`egress-check`、`secrets-check`、`config-check`、`draft`、`assessment`、`db` 以及离线模板脚手架。 | | [账号命令](https://github.com/craevidence/cli/blob/main/docs/account-commands.md) | 上传、扫描、状态、发布生命周期、分发器、配置文件、验证和校验。 | | [CI/CD 集成](https://github.com/craevidence/cli/blob/main/docs/ci-cd.md) | GitHub Action、GitLab Component、Docker、Jenkins、OpenSSF Scorecard 和 complyctl。 | | [安装](https://github.com/craevidence/cli/blob/main/docs/installation.md) | PyPI、Docker、容器镜像库和源码安装。 | | [故障排除](https://github.com/craevidence/cli/blob/main/docs/troubleshooting.md) | 常见错误及修复方法。 | ## 本地检查 `craevidence check` 扫描目录、容器镜像或现有的 SBOM,并 报告已知的漏洞信号,当达到阈值时这些信号可以阻止 CI。 它不需要账号,也不会将您的项目上传到 CRA Evidence。 ``` craevidence check . craevidence check --image ghcr.io/acme/app:1.4.2 craevidence check --sbom sbom.cdx.json craevidence check . --fail-on known-exploited ``` 默认情况下,`check` 使用网络数据源。安装并正常运行时它会使用 Grype, 当 Grype 缺失或失败时回退到 OSV.dev,并查询 CISA KEV 和 FIRST EPSS 进行数据富化。对于网络受限的运行环境,请 使用 `--sbom` 提供 SBOM,并在 Grype 拥有本地数据库的地方运行;如果无法访问 CISA KEV 和 FIRST EPSS,系统会将它们的数据富化报告为不可用。 详细输出包含一个名为 **此本地快照无法告诉您什么** 的部分。JSON 输出 以机器可读的格式保留相同的审查上下文。 ## 免费命令 这些命令不需要 `CRA_EVIDENCE_API_KEY`: | 命令 | 用途 | |---|---| | `check` | 扫描目录、镜像或 SBOM,并使用 `--fail-on` 控制 CI 门禁。 | | `eol-check` | 从本地 SBOM 组件中标记生命周期结束 (EOL) 和支持状态。 | | `egress-check` | 清点外部接口和数据外发指标。 | | `secrets-check` | 扫描工作区以查找疑似硬编码的密钥。 | | `config-check` | 审计 Dockerfile、Terraform 和 Kubernetes 文件中的不安全默认配置。 | | `draft` | 为审查构建 VEX、security.txt、公告、风险评估和威胁模型的草案。 | | `compliance-as-code template --offline` | 无需 API 密钥,从本地输入创建基础 YAML。 | | `assessment` | 构建 Annex I 适用性矩阵,并根据结构化的差距控制 CI 门禁。 | | `db update` / `db status` | 管理和检查本地 Grype 漏洞数据库缓存。 | ## CI 示例 GitHub Actions: ``` jobs: cra-check: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - run: pipx install craevidence - run: craevidence check . --fail-on known-exploited ``` GitLab CI: ``` cra-check: image: python:3.12-slim script: - pip install craevidence - craevidence check . --fail-on known-exploited ``` ## 账号命令 上传证据或读取 CRA Evidence 发布状态的命令需要 API 密钥: ``` export CRA_EVIDENCE_API_KEY=... craevidence upload-sbom --product my-product --version 1.0.0 --file sbom.cdx.json craevidence status --product my-product --version 1.0.0 ``` 默认的 API URL 是: ``` https://api.craevidence.com ``` 您可以使用以下命令覆盖它: ``` export CRA_EVIDENCE_URL=https://api.craevidence.com ``` ## 环境变量 | 变量 | 用途 | |---|---| | `CRA_EVIDENCE_API_KEY` | 用于账号命令的 API 密钥。 | | `CRA_EVIDENCE_URL` | CRA Evidence API URL。默认为 `https://api.craevidence.com`。 | | `CRA_EVIDENCE_ORG` | 默认的组织别名 (slug)。 | | `CRA_EVIDENCE_PRODUCT` | 用于上传命令的默认产品别名。 | | `CRA_EVIDENCE_VERSION` | 用于上传命令的默认产品版本。 | | `CRA_EVIDENCE_COMPONENT` | 用于组件感知上传的默认组件别名。 | | `CRA_EVIDENCE_COMPONENT_VERSION` | 默认的组件发布版本。 | | `CRA_EVIDENCE_TIMEOUT` | 账号命令的 HTTP 请求超时时间(秒)。默认为 `60`。 | | `CRA_NO_WARN` | 设置为任意值以屏蔽 API URL 配置警告。 | 凭据也可以存储在 `~/.cra-evidence/config.yaml` 中。请将该文件 保密,例如使用 `chmod 600 ~/.cra-evidence/config.yaml`。 ## 退出码 | 代码 | 含义 | |---|---| | 0 | 成功。对于本地门禁,在此本地快照中未出现已配置的阻塞性发现。 | | 1 | 一般错误。 | | 2 | 身份验证错误。 | | 3 | API 错误。 | | 4 | 验证错误。 | | 5 | 文件未找到。 | | 6 | 配置错误。 | | 7 | security.txt 验证失败。 | | 10 | 发现严重漏洞。 | | 11 | 发现高危漏洞。 | | 12 | 发现中危漏洞。 | | 13 | 发现低危漏洞。 | | 14 | SBOM 质量得分低于配置的阈值。 | | 15 | 本地扫描引擎不可用。 | | 16 | 超出许可证策略阈值。 | | 17 | 发现已知被利用的漏洞。 | | 18 | 发现疑似密钥。 | | 19 | 发现不安全默认配置问题。 | | 20 | 启用状态门禁时,CRA 状态未就绪。 | | 21 | 需要结构化证据映射,但未填充。 | | 22 | 需要 SBOM 签名信任,但验证不受信任。 | | 23 | SBOM 签名失败或没有可用的 Sigstore OIDC 身份。 | | 24 | 满足 CRA 合规底线,但不符合配置的发布策略。 | | 25 | 未处理强制性的 Annex I 要求。 | | 26 | Annex I Part I(2) 要求在无正当理由的情况下被标记为不适用。 | 退出码为 0 != 合规。本地输出是用于审查和 CI 策略的快照,而不是 法律结论。 ## 数据源 | 来源 | 用途 | |---|---| | FIRST EPSS | 漏洞利用概率富化。 | | CISA KEV | 已知被利用漏洞的富化。 | | OSV.dev | 使用 OSV 路径时的开源漏洞数据。 | | Anchore Grype | 安装后的本地漏洞匹配。 | | Anchore Syft | 安装或包含在 Docker 镜像中时,从目录和镜像生成 SBOM。 | | endoflife.date | 用于 `eol-check` 的生命周期结束和支持周期数据。 | ## 支持 - 网站:https://craevidence.com - 电子邮件:support@craevidence.com ## 许可证 MIT 许可证。有关详细信息,请参阅包许可证文件。
标签:Python, SBOM, 合规与审计, 无后门, 硬件无关, 请求拦截, 软件供应链安全, 远程方法调用, 逆向工具