aagamshah15/threat-risk-analytics-platform
GitHub: aagamshah15/threat-risk-analytics-platform
维吉尔:基于完整数据工程堆栈构建的生产级威胁情报和安全运营平台。
Stars: 0 | Forks: 0
# 维吉尔 — SOC 指挥中心
**基于完整数据工程堆栈构建的生产级威胁情报和安全运营平台。**
[](https://github.com/aagamshah15/threat-risk-analytics-platform/actions/workflows/ci.yml)
[](LICENSE)

## 它是什么
维吉尔是一个本地优先的 SOC 分析平台,它摄取真实的威胁情报源,生成合成安全事件,将它们关联成事件和风险评分,并通过专门构建的指挥中心 UI 展示。它完全在 Docker 上运行,只需一个命令。
该平台旨在展示端到端的数据工程和安全工程模式——流式摄取、ELT 管道、dbt 转换、JWT 认证的 API、WebSocket 实时流、操作可观察性——所有这些都在本地环境中准备就绪。
## 展示的技能
- **流式数据工程** — Kafka 兼容的生产者/消费者(Redpanda)、幂等更新、S3 兼容对象存储上的青铜湖
- **批量 ELT + 转换** — dbt Core 与阶段模型、维度/事实集市、SOC 风险集市、源新鲜度检查和数据测试
- **API 开发** — FastAPI 与 JWT 认证、API 密钥中间件、一次性 WebSocket 票据、Prometheus 指标、乐观锁定状态更新
- **React 前端** — 完整的 SOC 指挥中心,带有实时 WebSocket 流、深色/浅色主题、分析师工作流程状态、基于角色的视图
- **可观察性** — Prometheus、Grafana SLO 仪表板、Alertmanager 与本地警报接收器
- **编排** — Prefect 流用于批量、流健康检查和 dbt 构建
- **安全工程** — JWT 认证与刷新令牌、加固的认证中间件、CI 中的 Bandit + pip-audit、SECURITY.md 政策
- **CI/CD** — GitHub Actions:ruff、Bandit、pip-audit、dbt 构建 + 测试、pytest、React 检查/构建、Docker Compose 配置验证
## 快速开始
```
cp .env.example .env
make demo-up
```
就这样。完整的第 8 阶段堆栈启动,SQL 迁移应用,dbt 模型构建,SOC 场景加载。首次运行大约需要 60 秒。
```
make demo-down # stop, preserve volumes
make reset-p8 # wipe volumes for a clean restart
```
### 前置条件
- Docker 和 Docker Compose
- GNU Make
- Git
可选地,在 `.env` 中设置 `GITHUB_TOKEN`、`GITHUB_USERNAME` 和 `OTX_API_KEY` 以激活实时 GitHub 活动和威胁情报生产者。平台在没有它们的情况下也可以完全使用合成数据运行。
## 实时服务
| 服务 | URL |
| --- | --- |
| **维吉尔 SOC UI** | http://localhost:8600 |
| **FastAPI 文档** | http://localhost:8000/docs |
| Streamlit 仪表板 | http://localhost:8501 |
| Grafana | http://localhost:3000 |
| Prometheus | http://localhost:9090 |
| Redpanda UI | http://localhost:8080 |
| MinIO 控制台 | http://localhost:9001 |
| Prefect | http://localhost:4200 |
### 演示凭据
本地演示模式为五个分析师账户生成种子(密码:`changeme` 对所有账户有效):
| 角色 | 邮箱 |
| --- | --- |
| L1 分析师 | `l1@soc.internal` |
| L2 分析师 | `l2@soc.internal` |
| SOC 管理员 | `manager@soc.internal` |
| CISO | `ciso@soc.internal` |
| 合规官 | `compliance@soc.internal` |
## 架构
威胁数据通过五个阶段流动:
1. **摄取** — Python ELT 作业拉取 CISA KEV 和 URLhaus;生产者将 SOC 事件、GitHub 活动和 IOC 富化流式传输到 Redpanda
2. **着陆** — 消费者将只写 JSONL 批次写入 MinIO 青铜湖并更新到 Postgres 原始表
3. **转换** — dbt 构建:阶段 → 维度 → 事实 → SOC 风险集市(实体风险、事件时间线、合规证据、分析师问答)
4. **服务** — FastAPI 在 JWT/API 密钥认证后暴露 REST + WebSocket 端点;nginx 服务器提供 React UI 并代理 `/api`
5. **观察** — Prometheus 抓取指标;Grafana 提供SLO 仪表板;Alertmanager 将警报路由到本地接收器

## 技术栈
| 层 | 工具 |
| --- | --- |
| 摄取 | Python、CISA KEV、URLhaus、GitHub Events API、OTX/ThreatFox IOC 源 |
| 流式 | Redpanda(Kafka 兼容)、自定义生产者和消费者 |
| 存储 | MinIO(S3 兼容青铜湖)、PostgreSQL |
| 转换 | dbt Core — 阶段、维度、事实、SOC 集市 |
| 编排 | Prefect |
| API | FastAPI — JWT 认证、API 密钥模式、WebSockets、Prometheus 指标 |
| 前端 | React 18、Tailwind CSS、nginx |
| 可观察性 | Prometheus、Grafana、Alertmanager |
| CI / 质量保证 | GitHub Actions、pytest、ruff、Bandit、pip-audit、dbt 测试、ESLint |
| 运行时 | Docker Compose、GNU Make |
## 关键配置
将 `.env.example` 复制到 `.env`。大多数设置在本地演示中按默认值工作。显著的变量:
| 变量 | 默认值 | 备注 |
| --- | --- | --- |
| `JWT_AUTH_ENABLED` | `false` | 启用 SOC 端点的 JWT 强制执行 |
| `JWT_SECRET` | placeholder | 当 JWT 认证开启时必需 — `openssl rand -hex 32` |
| `PRODUCTION_MODE` | `false` | 启用严格的启动密钥验证 |
| `API_AUTH_ENABLED` | `false` | API 密钥强制执行切换 |
| `SEED_DEMO_USERS` | `true` | 首次启动时生成分析师账户 |
| `GITHUB_TOKEN` | unset | 可选 — 激活实时 GitHub 生产者 |
| `OTX_API_KEY` | unset | 可选 — 激活实时威胁情报生产者 |
对于生产级加固的认证:
```
JWT_AUTH_ENABLED=true
PRODUCTION_MODE=true
JWT_SECRET=$(openssl rand -hex 32)
COOKIE_SECURE=true
SEED_DEMO_USERS=false
API_CORS_ORIGINS=https://your-ui.example.com
```
## 有用命令
```
make demo-up # start full Phase 8 stack
make demo-down # stop, keep volumes
make reset-p8 # wipe volumes
make logs-p8 # tail all service logs
make psql # open psql on the warehouse
make docs-serve # serve dbt docs at localhost:8080
make backup-postgres # snapshot Postgres to backups/
make backup-minio # snapshot MinIO Bronze to backups/
```
## 文档
完整的架构说明、阶段指南和数据字典在 `/docs` 中。
- [数据字典](docs/)
- [SOC 数据字典](docs/DATA_DICTIONARY.md)
- [React SOC 指挥中心](docs/SOC_DATA_DICTIONARY.md)
- [安全策略](docs/REACT_SOC_COMMAND_CENTER.md)
- [贡献](SECURITY.md)
## 许可证
[MIT](CONTRIBUTING.md)
更多截图
    标签:自动化攻击, 自定义请求头, 请求拦截