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, 密码学资产, 插件系统, 日志审计, 漏洞管理, 程序破解, 证书管理, 请求拦截