bomly-dev/bomly-cli

GitHub: bomly-dev/bomly-cli

Bomly CLI 是一款开源命令行依赖智能分析工具,提供 SBOM 生成、漏洞审计、依赖追溯及 CI 策略门控能力。

Stars: 0 | Forks: 0

Bomly CLI

分析您的软件 DNA。

CI OpenSSF Scorecard Latest release License: Apache-2.0 Go Reference Go Report Card

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 scan progress showing indexed subprojects, detected dependencies, enriched packages, and resolved graph

## 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 interactive TUI overview with component, vulnerability, license, target, and distribution panels

## 丰富信息与审计 默认情况下,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)。

GitHub pull request checks showing Bomly Guard failing a required dependency check

## 将 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, 上游代理, 日志审计, 漏洞审计, 硬件无关, 调试插件