OmniTrustILM/cbom-lens
GitHub: OmniTrustILM/cbom-lens
一款用于扫描文件系统、容器和网络端口以发现密码学资产并生成 CycloneDX CBOM 1.6 格式物料清单的命令行工具。
Stars: 4 | Forks: 3
# CBOM-Lens
这是一款 CLI 工具,用于扫描文件系统、容器和网络端口以发现密码学资产,并生成 CycloneDX CBOM 1.6。
CBOM-Lens 能够发现本地文件、容器镜像和服务中的证书、密钥、敏感信息(secrets)和算法,并生成一致的密码学物料清单(CBOM),该清单可上传至 CBOM-Repository 或由外部应用调用。
## 功能
- **多种扫描目标**
- 本地**文件系统**(证书、密钥、敏感信息)。
- 来自 Docker/Podman 的**容器镜像**。
- 使用 nmap 扫描的**网络端口**(TLS 和 SSH 检测)。
- **CycloneDX CBOM 1.6 输出**
- 稳定且基于内容的 `bom-ref` 标识符,用于跨数据源关联相同的密码学资产。
- 针对私钥和算法组件的隐私感知处理。
- **灵活的运行模式**
- 一次性**手动**运行(适用于 CI 和临时扫描)。
- 使用 cron 表达式或 ISO-8601 持续时间的**定时器**模式。
- 由 CZERTAINLY Core 管理的**发现**模式。
- **集成就绪**
- 可选上传至 **CBOM-Repository**。
- 专为集成至各类应用而设计。
有关概念性概述与背景,请参阅[概述](docs/overview.md)。
## 快速入门
### 安装
从源码构建(需要 Go):
```
cd CBOM-Lens
go build -o cbom-lens ./cmd/cbom-lens
./cbom-lens --help
```
如需包含安装和首次扫描的详细引导式演练,请参阅[快速入门](docs/quick-start.md)。
### 最小化的文件系统扫描
创建配置文件 `cbom-lens.yaml`:
```
version: 0
service:
mode: manual
verbose: false
log: stderr
# Save CBOM files in the current directory; omit to print to stdout
dir: .
filesystem:
enabled: true
# When empty, the current directory is scanned
paths: []
```
运行扫描:
```
./cbom-lens run --config cbom-lens.yaml
```
当设置了 `service.dir` 时,CBOM 会写入 `cbom-lens-.json` 文件,否则将输出到 stdout。
有关更多文件系统、容器和端口的示例,请参阅[快速入门](docs/quick-start.md)。
## 配置基础
CBOM-Lens 通过单个 YAML 文件进行配置。顶层结构如下:
- `version`:配置版本(目前为 `0`)。
- `service`:运行时行为(模式、日志、调度、仓库、服务器)。
- `filesystem`:文件系统扫描设置。
- `containers`:容器扫描设置。
- `ports`:端口扫描设置。
典型模式:
- **手动一次性扫描** —— `service.mode: manual`(适用于 CI 流水线和临时运行)。
- **定时扫描** —— `service.mode: timer` 配合 `service.schedule.cron` 或 `service.schedule.duration`。
- **由 CZERTAINLY 管理的发现** —— `service.mode: discovery` 配合额外的 `service.server` 和 `service.core` 配置。
配置文档:
- [配置指南](docs/configuration.md) —— 针对常见场景的叙述性“操作指南”。
- [配置参考](docs/config.md) —— 逐字段详细规范。
- [配置 schema](docs/config.cue) —— 用于验证的 CUE schema。
- [示例配置](docs/manual-config.yaml) —— 可供您修改适配的完整手动模式示例。
## 运行模式
CBOM-Lens 支持三种由 `service.mode` 控制的运行模式:
- `manual` —— 执行单次扫描后退出。最适合临时运行、CI 或由外部管理的 cron 任务。
- `timer` —— CBOM-Lens 保持运行并按计划(cron 或 ISO-8601 持续时间)执行扫描。
- `discovery` —— CBOM-Lens 作为由 CZERTAINLY 通过发现协议管理的服务运行。
有关详细的调度语义(cron 字段、诸如 `@daily` 的宏指令,以及如 `P1DT2H3M4S` 的 ISO-8601 持续时间),请参阅[扫描模式与调度](docs/scanning-modes.md)。
## 扫描数据源
CBOM-Lens 可以扫描三种主要数据源。每一种都有专门的文档说明:
- **文件系统** —— 配置 `filesystem.enabled` 和 `filesystem.paths` 以扫描目录。
- 请参阅[快速入门](docs/quick-start.md#1-filesystem-scan)和[配置指南](docs/configuration.md#3-filesystem-scans)。
- **容器镜像** —— 配置 `containers.enabled` 和 `containers.config` 以通过 Docker/Podman 扫描镜像。
- 请参阅[快速入门](docs/quick-start.md#2-container-image-scan-docker--podman)和[配置指南](docs/configuration.md#4-container-scans)。
- **网络端口 (nmap)** —— 配置 `ports.enabled` 及相关字段以扫描端口。
- 请参阅[快速入门](docs/quick-start.md#3-port-scan-nmap)和[配置指南](docs/configuration.md#5-port-scans-nmap)。
有关更广泛的策略和最佳实践,请参阅[扫描用例与最佳实践](docs/scanning-use-cases.md)。
## 保存与上传结果
默认情况下,CBOM-Lens 会将生成的 CBOM 输出到标准输出 (stdout)。
您还可以:
- 使用 `service.dir` 将 CBOM 保存为文件。
- 使用 `service.repository.base_url` 将 CBOM 上传至 CBOM-Repository。
有关操作细节和示例,请参阅:
- [操作说明](docs/operations.md) —— 运行、日志和输出处理。
- [CZERTAINLY 与 CBOM-Repository 集成](docs/integration-czertainly.md)。
CBOM 格式的详细信息(包括 `bom-ref` 策略和 PQC 建模)记录在 [CBOM 输出格式](docs/cbom-format.md)中。
## 开发
如果您希望了解或扩展 CBOM-Lens:
- [开发指南](docs/development.md) —— 环境、构建与工作流。
- [架构](docs/architecture.md) —— 内部设计与包结构。
- [扩展探测器](docs/extending-detectors.md) —— 如何添加新的扫描探测器。
- [测试与 CI](docs/testing-ci.md) —— 运行单元测试和集成测试。
## 后量子密码学支持
尽管 Go 的标准库尚未实现,CBOM-Lens 依然可以检测出制品中的某些后量子密码学 (PQC) 算法。
- 支持对 **ML-DS** 家族的检测。
- PQC 算法被建模为具有详细属性(密钥大小、签名大小、安全级别等)的密码学算法资产。
有关 CBOM 中如何表示 PQC 算法的示例,请参阅 [CBOM 输出格式](docs/cbom-format.md)。
## 许可证
CBOM-Lens 基于 [LICENSE.md](LICENSE.md) 中规定的条款进行授权。
标签:AI应用开发, CBOM, CycloneDX, EVTX分析, Go语言, GPT, LNA, StruQ, 密码学资产, 插件系统, 日志审计, 漏洞管理, 程序破解, 证书管理, 请求拦截