yunkewang/open-detection-control-plane
GitHub: yunkewang/open-detection-control-plane
ODCP 是一个厂商中立的检测工程控制平面,用于分析安全检测规则的依赖关系、评估就绪状态和运行时健康状况,帮助团队理解、验证和优化 SIEM 平台中的检测内容。
Stars: 0 | Forks: 0
# 开放检测控制平面 (ODCP)
**一个用于理解、验证和优化安全检测内容的供应商中立平台。**
ODCP 回答了每个检测工程团队都会面临的问题:
- 这个安全环境实际上是什么样的?
- 这里存在哪些检测内容?
- 这些检测有哪些依赖项?
- 这些检测在此环境中是否可运行?
- 如果不能,缺少了什么或有什么降级?
- 应该优先优化什么?
## 为什么存在
安全团队在复杂的环境中部署检测内容(Splunk 关联搜索、Sigma 规则、Sentinel 分析)。这些检测依赖于宏、查找表、数据模型、字段提取和数据源 —— 但目前没有标准的方法来理解或验证这些依赖关系。
ODCP 提供了一个**统一控制平面**,用于对环境、检测、依赖关系和就绪状态进行建模 —— 从 Splunk 开始,旨在支持任何平台。
## 架构
| 层级 | 组件 |
|-------|------------|
| **CLI / API** | `odcp scan`, `odcp report`, `odcp graph` |
| **报告** | JSON, Markdown, HTML |
| **分析器** | 就绪状态, 依赖项, **运行时健康**, *(未来: 语义差距, 优化)* |
| **核心引擎** | 依赖图, 评分, 发现 |
| **适配器** | **Splunk** (静态 + 运行时), *(未来: Sigma, Sentinel, Elastic, Chronicle)* |
| **收集器** | 本地, **Splunk REST API**, *(未来: 远程)* |
| **统一模型** | Environment, Detection, Dependency, Finding, ReadinessScore, RuntimeHealthScore, ScanReport |
## 当前 MVP (v0.1.0)
### 已实现内容
**阶段 1 — 静态就绪状态:**
- **核心模型** — 用于 Environment、Detection、Dependency、Finding、ReadinessScore、ScanReport 的 Pydantic v2 模型
- **Splunk 适配器** — 解析 `savedsearches.conf`、`macros.conf`、`eventtypes.conf`、`transforms.conf` 并进行 default/local 合并
- **SPL 依赖提取** — 从 SPL 查询中提取宏、事件类型、查找表、数据模型和已保存搜索的引用
- **依赖图** — 基于 NetworkX 的图,将检测链接到依赖项
- **就绪状态分析器** — 将检测分类为 `runnable`(可运行)、`partially_runnable`(部分可运行)、`blocked`(受阻)或 `unknown`(未知)
- **依赖项分析器** — 识别孤立对象和高影响依赖项
- **报告** — JSON、Markdown 和 HTML 输出格式
- **CLI** — `odcp scan splunk`、`odcp report`、`odcp graph`、`odcp version`
**阶段 2 — 运行时信号与健康:**
- **Splunk REST API 客户端** — Token 和基本认证,SSL 可配置,查询已保存搜索、查找表、数据模型和索引
- **API 收集器** — 从实时 Splunk 实例收集运行时信号,并具有优雅的错误处理
- **运行时健康模型** — `SavedSearchHealth`、`LookupHealth`、`DataModelHealth`、`IndexHealth`、`RuntimeSignal`、`RuntimeHealthScore`、`CombinedReadinessScore`
- **运行时健康分析器** — 根据实时信号(调度、执行失败、查找表可用性、数据模型加速)对检测进行评分
- **综合评分** — 将静态就绪状态 + 运行时健康状况合并为一个综合分数,权重可配置
- **运行时 CLI 标志** — `--api-url`、`--token`、`--username`、`--password`、`--verify-ssl`、`--indexes`
### 占位符 / 未来内容
- 语义差距分析器(数据源覆盖分析)
- 优化分析器(优先修复)
- 额外适配器(Sigma, Sentinel, Elastic, Chronicle)
## 安装
```
pip install -e .
```
用于开发:
```
pip install -e ".[dev]"
```
## 快速开始
### 扫描 Splunk 应用
```
# Console 摘要
odcp scan splunk /path/to/splunk_app
# 完整 JSON 报告
odcp scan splunk /path/to/splunk_app --output report.json
# Markdown 报告
odcp scan splunk /path/to/splunk_app --output report.md --format markdown
# HTML 报告
odcp scan splunk /path/to/splunk_app --output report.html --format html
```
### 扫描并检查运行时健康(需要实时 Splunk)
```
# 结合 static + runtime 扫描与 token auth
odcp scan splunk /path/to/splunk_app --api-url https://splunk:8089 --token YOUR_TOKEN
# 使用 username/password 和特定 index 检查
odcp scan splunk /path/to/splunk_app \
--api-url https://splunk:8089 \
--username admin --password changeme \
--indexes main,security
```
### 转换报告格式
```
odcp report report.json --format markdown --output report.md
```
### 查看依赖图统计
```
odcp graph report.json
```
### 示例输出
```
╭──────────────── Scan: ACME Security Detections ──────────────────╮
│ Total detections: 5 │
│ Runnable: 3 Partial: 0 Blocked: 2 Unknown: 0 │
│ Overall readiness: 67% │
╰──────────────────────────────────────────────────────────────────╯
Top Blocked Detections
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┳━━━━━━━┳━━━━━━━━━┓
┃ Detection ┃ Score ┃ Missing ┃
┡━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━╇━━━━━━━╇━━━━━━━━━┩
│ Detect Data Exfiltration via DNS │ 0% │ 3 │
│ Detect Unauthorized Cloud API Calls │ 33% │ 2 │
└─────────────────────────────────────┴───────┴─────────┘
```
## 运行测试
```
pytest tests/ -v
```
## 项目结构
```
odcp/
├── models/ # Pydantic data models (unified schema + runtime health)
├── core/ # Engine, dependency graph
├── adapters/ # Vendor adapters (Splunk static + REST API client)
├── analyzers/ # Readiness, dependency, runtime health analyzers
├── collectors/ # Data collection (local filesystem, Splunk REST API)
├── reporting/ # JSON, Markdown, HTML report generation
└── cli/ # Typer CLI interface
```
## 路线图
| 阶段 | 重点 | 状态 |
| ----- | ----------------------------------------------------- | ---------------- |
| 1 | Splunk 静态就绪状态分析 | **已完成** |
| 2 | Splunk 运行时信号与健康 | **已完成** |
| 3 | 语义差距分析与优化 | 已规划 |
| 4 | 额外供应商适配器 (Sigma, Sentinel, Elastic) | 已规划 |
有关详细的路线图,请参阅 [docs/mvp-roadmap.md](docs/mvp-roadmap.md);有关架构详细信息,请参阅 [docs/architecture.md](docs/architecture.md)。
## 许可证
Apache 2.0
标签:AMSI绕过, BAS, HTTP/HTTPS抓包, WebSocket, 依赖分析, 威胁检测, 安全有效性, 安全运营, 态势感知, 扫描框架, 控制平面, 攻击模拟, 特权检测, 聊天机器人, 规则优化, 规则管理, 运行时健康, 逆向工具, 驱动签名利用