musabe/incident-response-simulator

GitHub: musabe/incident-response-simulator

基于 Claude AI 的交互式事件响应模拟训练平台,帮助运维和平台工程师在受控环境中通过真实场景练习结构化诊断与故障排查技能。

Stars: 0 | Forks: 0

# 🚨 事件响应模拟器 ![语言](https://img.shields.io/badge/language-Python-blue?style=flat-square) ![技术栈](https://img.shields.io/badge/stack-FastAPI%20%7C%20PostgreSQL%20%7C%20Docker-green?style=flat-square) ![状态](https://img.shields.io/badge/status-active-brightgreen?style=flat-square) ## 🎯 概述 支持和平台工程师通过真实经验来培养事件响应技能——但真实事件往往不可预测且压力巨大。本模拟器允许你在受控环境中练习结构化的诊断和解决过程,并由 AI 对你的每一步操作进行评分。 基于 10 年来跨 API 集成、数据库故障、基础设施中断和身份验证崩溃等真实生产事件模式构建。 **独特之处:** - Claude 使用具体的技术反馈评估每一个操作——而非泛泛的提示 - 每个场景中都嵌入了干扰项,以测试你的模式识别能力 - 评分机制会惩罚无效步骤并奖励高效诊断 - AI 可以根据你描述的任何主题,生成无限的新场景 ## 📸 屏幕截图 ### 架构 ![展示 CLI 和 Web UI 连接到 FastAPI 再到模拟器引擎、Claude API、PostgreSQL 和场景的架构图](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/c0a6e817ba111438.png) *系统架构——异步 FastAPI 服务器连接模拟引擎、Claude API 和 PostgreSQL* ### Web UI — 场景选择 ![场景列表展示了 6 个场景,包括数据库连接池耗尽、OAuth Token 轮换、Docker OOM、API 速率限制、SSO SAML 以及 AI 生成的 S3 场景](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/1a984037e6111439.png) *预构建和 AI 生成的场景,包含严重性徽章、难度评级和时间限制* ### Web UI — 模拟开始 ![激活的模拟显示了事件描述、可观察的症状、操作输入以及计时器(显示 19:54)](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/0deeb73447111441.png) *模拟已开始——列出症状,20 分钟倒计时运行中,初始分数为 100* ### Web UI — 步骤评估 ![模拟显示了对 pg_stat_activity 查询的“正确 +13分”反馈,并附带详细的技术解释](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/215ec618a4111442.png) *Claude 评估每一步操作——“正确”(+13分),并提供关于该操作为何正确的具体技术反馈* ### 排行榜 ![排行榜显示了两个已完成的会话,在“数据库连接池耗尽”场景中均获得了 100 分的 A 评级](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/793a9655d9111443.png) *基于 PostgreSQL 持久化的排行榜——包含每个会话的分数、评级、耗时和使用的提示次数* ## 🧰 技术栈 - **语言** — Python 3.11 - **API 框架** — FastAPI - **数据库** — PostgreSQL 15 - **基础设施** — Docker Compose - **LLM** — Claude API (claude-sonnet-4-5) - **HTTP 客户端** — httpx - **数据库驱动** — asyncpg ## 📁 项目结构 ``` incident-response-simulator/ ├── docker-compose.yml ├── Dockerfile ├── requirements.txt ├── .env.example ├── src/ │ ├── main.py # FastAPI app + CLI entrypoint │ ├── simulator.py # Session management + scoring engine │ ├── ai_engine.py # Claude API — step evaluation + scenario generation │ ├── db.py # PostgreSQL persistence + leaderboard │ └── config.py # Environment variable config ├── scenarios/ │ ├── builtin.json # 5 pre-built production incident scenarios │ └── ai_generated/ # Claude-generated scenarios (saved to disk) ├── templates/ │ └── dashboard.html # Web UI — scenario runner + leaderboard └── docs/ └── screenshots/ # README screenshots ``` ## 🚀 快速开始 ### ✅ 前置条件 - 已安装并运行 Docker - Python 3.9+ - 一个 Anthropic API 密钥 ### ▶️ 步骤 1 — 克隆并配置 ``` git clone https://github.com/musabe/incident-response-simulator cd incident-response-simulator cp .env.example .env # 在 .env 中添加你的 ANTHROPIC_API_KEY ``` ### ▶️ 步骤 2 — 启动容器 ``` docker-compose up -d ``` ### ▶️ 步骤 3 — 安装依赖(本地开发) ``` pip install -r requirements.txt ``` ### ▶️ 步骤 4 — 列出可用场景 ``` python src/main.py list ``` ``` db-connection-pool-exhausted [medium] [CRITICAL] Database Connection Pool Exhausted oauth-token-rotation-failure [medium] [HIGH] OAuth Token Rotation Failure docker-oom-crash-loop [easy] [HIGH] Docker Container OOM Crash Loop api-rate-limit-cascade [hard] [MEDIUM] API Rate Limit Cascade Failure sso-saml-misconfiguration [medium] [HIGH] SSO / SAML Authentication Failure ``` ### ▶️ 步骤 5 — 运行 CLI 模拟 ``` python src/main.py run db-connection-pool-exhausted ``` ### ▶️ 步骤 6 — 或使用 Web UI ``` python src/main.py serve ``` 打开 **http://localhost:8002** ## 🎮 工作原理 ### 模拟流程 ``` Start scenario → Read symptoms → Diagnose (scored) → Resolve (scored) → RCA → Final score + feedback ``` ### 评分机制 | 因素 | 影响 | |---|---| | 正确操作 | +10 到 +15 分 | | 部分正确操作 | +3 到 +8 分 | | 错误操作 | -5 到 -15 分 | | 每次使用提示 | -5 分 | | 在时间限制的 <50% 内完成 | +10 奖励 | | 在时间限制的 <75% 内完成 | +5 奖励 | | 超出时间限制 | -20 分 | ### 阶段 1. **诊断** — 利用可观察的症状找出根本原因 2. **解决** — 逐步实施修复措施 3. **RCA** — 记录根本原因和预防措施 ### 命令(CLI) | 命令 | 操作 | |---|---| | `<你的操作>` | 提交一个诊断/解决步骤 | | `hint` | 请求提示(-5 分) | | `done` | 完成模拟 | | `quit` | 放弃模拟 | ## 🤖 AI 场景生成 根据你描述的任何主题生成无限的新场景: ``` # CLI python src/main.py generate "Kafka consumer lag causing order processing delays" --difficulty hard # Web UI — 使用 scenarios 页面顶部的 Generate 表单 ``` 生成的场景会保存到 `scenarios/ai_generated/` 并立即可用于重放。 ## 🏗️ 架构 ``` CLI / Web UI ↓ FastAPI (main.py) ↓ Simulator Engine (simulator.py) ← session state, scoring, phase management ↓ Claude API (ai_engine.py) ← step evaluation, scenario generation, feedback ↓ PostgreSQL (db.py) ← session persistence, leaderboard ``` **关键设计决策:** - **全链路异步** — 使用 FastAPI + asyncpg + httpx 实现非阻塞 I/O - **内存会话存储** — 活跃会话保存在内存中以提高速度;已完成的会话持久化到 PostgreSQL - **优雅的数据库降级** — 如果 PostgreSQL 不可用,将使用内存存储运行 - **无状态的 Claude 调用** — 每次评估调用都会发送完整的场景上下文,以确保准确性 - **每个场景都包含干扰项** — 测试模式识别能力,而不仅仅是技术知识 ## 📋 预构建场景 | 场景 | 类别 | 严重性 | 难度 | 时间 | |---|---|---|---|---| | 数据库连接池耗尽 | 数据库 | 严重 (CRITICAL) | 中等 | 20 分钟 | | OAuth Token 轮换失败 | API / OAuth | 高 (HIGH) | 中等 | 15 分钟 | | Docker 容器 OOM 崩溃循环 | 基础设施 | 高 (HIGH) | 简单 | 12 分钟 | | API 速率限制级联失败 | API / 速率限制 | 中 (MEDIUM) | 困难 | 25 分钟 | | SSO / SAML 配置错误 | 身份验证 | 高 (HIGH) | 中等 | 20 分钟 | AI 生成的场景按需创建并保存到 `scenarios/ai_generated/`。运行 `python src/main.py generate "你的主题"` 即可添加更多场景。 ## 🚧 状态 | 功能 | 状态 | |---|---| | 预构建场景库(5 个场景) | ✅ 已完成 | | AI 步骤评估 + 评分 | ✅ 已完成 | | AI 场景生成 | ✅ 已完成 | | CLI 模拟界面 | ✅ 已完成 | | Web UI 模拟运行器 | ✅ 已完成 | | PostgreSQL 会话持久化 | ✅ 已完成 | | 排行榜 | ✅ 已完成 | | 模拟后 AI 反馈 | ✅ 已完成 | | 渐进式提示系统 | ✅ 已完成 | | 多人 / 团队模式 | 🔜 计划中 | | 场景难度校准 | 🔜 计划中 | | 导出模拟报告为 PDF | 🔜 计划中 | ## 👤 作者 **Mustapha Abella** 高级技术支持工程师 专注于 API 驱动的 SaaS、数据集成和面向开发者的支持 [github.com/musabe](https://github.com/musabe)
标签:AI评估, API集成, AV绕过, Claude, CVE检测, DevSecOps, DLL 劫持, Docker, FastAPI, IT运维, OPA, osquery, PostgreSQL, Python, Socks5代理, SRE, TGT, 上游代理, 事件响应模拟, 偏差过滤, 可观测性, 基础设施故障, 大语言模型, 安全事件响应, 安全培训, 安全工程师培训, 安全防御评估, 库, 应急响应, 攻防演练, 故障排查, 数据库故障, 无后门, 测试用例, 网络安全教育, 请求拦截, 身份认证故障, 运维安全, 运行时操纵, 逆向工具, 靶场