bomly-dev/bomly-cli
GitHub: bomly-dev/bomly-cli
Bomly CLI 是一款开源命令行依赖智能分析工具,提供 SBOM 生成、漏洞审计、依赖追溯及 CI 策略门控能力。
Stars: 0 | Forks: 0
分析您的软件 DNA。
Bomly 是一款免费、开源的 CLI 依赖智能分析工具。它可以扫描源码树、SBOM、Git refs 和容器镜像;解释引入依赖的原因;在您需要时通过漏洞和许可证数据丰富包信息;执行策略评估;并为 CI 输出易于自动化的结果。
单一二进制文件。无需托管服务。无遥测。除非您通过 `--enrich` 主动开启,否则不进行任何外部 matcher 调用。
## 安装 Bomly
```
# PATH 上的 Go toolchain
go install github.com/bomly-dev/bomly-cli/cmd/bomly@latest
```
可以从 [GitHub Releases](https://github.com/bomly-dev/bomly-cli/releases) 获取适用于 Linux、macOS 和 Windows 的预编译包。发布版本包含 `bomly`(内置 Syft 和 Grype 的完整二进制文件)和 `bomly-lite`(调用外部 `syft` 和 `grype` 的精简版二进制文件)。
验证安装:
```
bomly version
```
有关校验和、PowerShell 示例、CI 安装代码片段、升级和卸载说明,请参阅[安装指南](docs/INSTALLATION.md)。
## 从扫描开始
```
# 扫描当前项目
bomly scan
# 扫描特定目录
bomly scan --path ./services/api
# 扫描 container image
bomly scan --container ghcr.io/example/app:latest
# 扫描远程 Git ref
bomly scan --url https://github.com/owner/repo --ref v1.2.3
# 读取现有的 SPDX 或 CycloneDX SBOM
bomly scan --sbom --path ./sbom.cdx.json
```
Bomly 会读取 manifest、lockfile、包管理器输出、容器层或现有的 SBOM,并将它们转换为一个统一的依赖图。原生探测器支持 Go、npm、pnpm、Yarn、Maven、Gradle、Python、Composer、Bundler、GitHub Actions、SBOM 导入等。Syft 负责处理长尾需求,包括容器镜像。请参阅[支持矩阵](docs/SUPPORT_MATRIX.md)和[扫描目标](docs/SCAN_TARGETS.md)。
## Bomly 能解答什么问题
| 问题 | 命令 |
| --- | --- |
| 我们依赖什么? | `bomly scan` |
| 这个 PR 或分支有哪些变更? | `bomly diff --base main --head HEAD` |
| 为什么会引入这个包? | `bomly explain lodash` |
| 哪些发现与策略相关? | `bomly scan --enrich --audit --fail-on high` |
| CI 能否在出现高危发现时失败? | `bomly scan --enrich --audit --fail-on high --format sarif` |
| 我能优先分类可触达的发现吗? | `bomly scan --enrich --audit --analyze --fail-on high --fail-on reachable` |
获取更多方案,请参阅[入门指南](docs/GETTING_STARTED.md)和[用例](docs/USE_CASES.md)。
## 交互式探索
当您想手动检查依赖图时,可以打开终端 UI:
```
bomly scan --interactive
```
使用它可以模糊查找包、检查版本和作用域、在发现结果中切换查看,以及了解某个依赖是如何进入依赖图的,而无需将报告写入磁盘。请参阅[交互式 TUI](docs/TUI.md)。
## 丰富信息与审计
默认情况下,Bomly 不会调用漏洞、许可证、生命周期或 scorecard 服务。当您需要外部包智能信息时,请添加 `--enrich`:
```
# 获取漏洞和许可证数据
bomly scan --enrich
# 根据丰富的 package 数据评估策略
bomly scan --enrich --audit --fail-on high
# 添加实验性 reachability analysis
bomly scan --enrich --audit --analyze --fail-on high --fail-on reachable
```
内置的信息丰富功能使用公共服务,如 OSV、CISA KEV、deps.dev 和 OpenSSF Scorecard。`--audit` 会评估包上现有的漏洞和许可证数据;当您希望在一次运行中获取并评估数据时,请使用 `--enrich --audit`。
可达性(Reachability)目前处于实验阶段。它对分类排查很有用,但“不可达”并不意味着绝对安全。在将 `--fail-on reachable` 用作 CI 门控之前,请先阅读[可达性](docs/REACHABILITY.md)。
## 解释与差异对比
当出现一个间接依赖包而您需要了解其引入路径时,请使用 `explain`:
```
bomly explain requests
bomly explain lodash --path ./web
```
当您需要审查跨 Git refs 或 SBOM 的依赖变更时,请使用 `diff`:
```
# 对比 Git refs
bomly diff --base main --head HEAD
# 对比两个 SBOM 文件
bomly diff --sbom --base ./old.spdx.json --head ./new.spdx.json
```
有关首次运行的详细步骤,请参阅[入门指南](docs/GETTING_STARTED.md);有关 PR 审查、升级审查和事件分类的方案,请参阅[用例](docs/USE_CASES.md)。
## 为 CI 生成输出
Bomly 可以输出人类可读的文本、JSON、SARIF、SPDX 2.3 和 CycloneDX 1.6:
```
# 用于自动化的结构化 JSON
bomly scan --json
# 用于 security tabs 和 code-scanning 集成的 SARIF
bomly scan --enrich --audit --fail-on high --format sarif
# 在仍显示正常报告的同时写入 SBOMs
bomly scan -o spdx=sbom.spdx.json -o cyclonedx=sbom.cdx.json
# 向 stdout 输出一个 SBOM
bomly scan --format cyclonedx
```
退出码对于脚本而言是稳定的:`0` 表示结果正常,`2` 表示策略违规,针对用法错误、运行时错误和无受支持项目等失败情况则有各自独立的值。请参阅[输出格式](docs/OUTPUT_FORMATS.md)、[SBOM 格式](docs/SBOM.md)和[退出码](docs/EXIT_CODES.md)。
要对 pull request 进行门控,请使用 [Bomly Guard action](https://github.com/bomly-dev/bomly-guard) 或直接在您的工作流中调用 CLI。请参阅 [Bomly Guard](docs/BOMLY_GUARD.md) 和 [CI 集成](docs/CI_INTEGRATION.md)。
## 将 Bomly 与 AI Agents 结合使用
Bomly 可以作为 MCP 服务器运行,这样 AI agents 就能调用与您在命令行中使用的相同的 `scan`、`explain` 和 `diff` 功能:
```
bomly mcp serve
```
将 Bomly 添加到支持 MCP 的 agent(例如 Claude Code、Cursor、VS Code 或自定义工具)中,agent 就会接收到结构化的 JSON 数据,以便进行总结或逻辑推理。有关配置方案,请参阅[入门指南](docs/GETTING_STARTED.md)。
## 配置与扩展
Bomly 会从全局配置、项目配置、`BOMLY_*` 环境变量和 CLI flags 中读取配置,后面的配置源具有更高的优先级:
1. `~/.bomly/config.yaml`
2. `
/.bomly/config.yaml`
3. `BOMLY_*` 环境变量
4. CLI flags
使用 `--config ` 可添加明确的配置文件。请参阅生成的[配置参考](docs/CONFIG_REFERENCE.md)。
托管插件允许您在不 fork Bomly 的情况下添加探测器、matcher 和审计器:
```
bomly plugin install github:bomly-dev/bomly-plugin-bun-lock-detector@v0.1.0
bomly plugin enable bomly.examples.detector.bun-lock
bomly plugin verify bomly.examples.detector.bun-lock
```
有关安装、信任和编写的指南,请参阅[插件](docs/PLUGINS.md)。
## 文档
- [入门指南](docs/GETTING_STARTED.md) - 安装 Bomly 并运行您的首次扫描
- [安装指南](docs/INSTALLATION.md) - 安装方法、校验和、升级、卸载
- [用例](docs/USE_CASES.md) - PR 门控、SBOM、分类排查和离线扫描的实用方案
- [扫描目标](docs/SCAN_TARGETS.md) - 目录、Git 仓库、容器和 SBOM
- [输出格式](docs/OUTPUT_FORMATS.md) - 文本、JSON、SARIF、SPDX、CycloneDX
- [SBOM 格式](docs/SBOM.md) - SPDX 2.3 和 CycloneDX 1.6,导入和转换方案
- [CI 集成](docs/CI_INTEGRATION.md) - GitHub Actions、GitLab、Jenkins、Azure、CircleCI
- [Bomly Guard](docs/BOMLY_GUARD.md) - 用于 PR 依赖审查的交钥匙 GitHub Action
- [可达性](docs/REACHABILITY.md) - 实验性的可触达漏洞分类排查
- [插件](docs/PLUGINS.md) - 托管的外部探测器、matcher 和审计器
- [所有文档](docs/README.md) - 完整的文档索引
贡献者设置指南位于 [CONTRIBUTING.md](CONTRIBUTING.md)。架构详情位于 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。
## 许可证
Bomly CLI 采用 [Apache License 2.0](LICENSE) 许可证。标签:DevSecOps, EVTX分析, Go, Linux安全, Ruby工具, SBOM, 上游代理, 日志审计, 漏洞审计, 硬件无关, 调试插件