jussiroine/incident-responder
GitHub: jussiroine/incident-responder
一个基于 Microsoft Agent Framework 构建的 AI 安全事件响应演示项目,通过人机协同审批和只读调查与写入响应分离的设计,展示了如何安全地辅助处置安全告警。
Stars: 0 | Forks: 0
# Incident Responder
一个基于 **Microsoft Agent Framework** 1.0 构建的 AI 驱动的安全事件响应演示。它从 Defender XDR 或本地样本文件中提取事件,使用由 LLM 支持的 agent 对其进行调查,提出排序后的响应操作,并通过人机协同 (human-in-the-loop) 审批门对其进行模拟执行。完全通过 CLI 运行。
## 存在的原因
大多数 Agentic AI 演示要么 完全跳过治理,要么 将其过度工程化以至于在台上无法展示。这是一条中间路线:一个可工作的 agent,用于对真实形态的事件进行分类,具备简洁的 HITL(人机协同)审批门、仅追加的审计日志以及只读调查与写入响应之间的清晰分离。您可以将其用作会议演示材料、播客内容,或在关于 AI 护栏的客户交谈中留下的参考架构。
有关设计原理,请参见 [`governance.md`](./governance.md)。
## 快速开始
```
git clone
cd incident-responder
# 推荐:uv 或 virtualenv
python -m venv .venv && source .venv/bin/activate
pip install -e .
cp .env.example .env
# 编辑 .env:设置 MODEL_PROVIDER 及匹配的 credentials。
# 如果使用无 API key 的 Azure OpenAI:
az login
# 使用 agent 运行单个样本 incident:
incident-responder run --source local --incident impossible_travel
# 或者按顺序运行全部四个样本:
incident-responder run --source local
# 列出可用内容:
incident-responder list-samples
# 查看最新 audit log:
incident-responder show-audit
```
## CLI
```
incident-responder run Triage incidents and propose responses
incident-responder list-samples List bundled sample incidents
incident-responder reset-mocks Reset in-memory tenant state to seed
incident-responder show-state Dump current mock tenant as JSON
incident-responder show-audit Print the latest audit log
```
`run` 接受以下参数:
- `--source local|defender` — 事件来源 (默认为 `local`)
- `--incident NAME` — 仅限 `local` 使用,样本名称 (省略此项则运行全部)
- `--since 1h|24h|7d` — 仅限 `defender` 使用,时间回溯范围
## 模型提供商
在 `.env` 中将 `MODEL_PROVIDER` 设置为以下之一:
| 提供商 | 适用场景 | 必需的环境变量 |
| --- | --- | --- |
| `azure` | 与 Microsoft 相关的演示 | `AZURE_OPENAI_ENDPOINT`, `AZURE_OPENAI_CHAT_DEPLOYMENT_NAME`。通过 `AZURE_OPENAI_API_KEY` *或* `az login` 进行身份验证。 |
| `openai` | 快速验证 | `OPENAI_API_KEY` |
| `ollama` | 离线 / 现场演示 | `pip install agent-framework-ollama`,设置 `OLLAMA_HOST` 和 `OLLAMA_MODEL_ID` |
在 WiFi 不稳定的场馆进行演示时,Ollama 选项与 Qwen 2.5 14B 或 Llama 3.1 8B 搭配使用效果极佳。
## 内置样本事件
| 名称 | 场景 | 预期响应形态 |
| --- | --- | --- |
| `impossible_travel` | 异地登录 (13 分钟内从 FI 到 RU,匿名 IP,无 MFA) | 撤销会话 + 强制重置密码 + (考虑封禁) |
| `oauth_consent_grant` | 向未验证的应用授予包含 `Mail.Read` + `Files.Read.All` 的同意 | 撤销 OAuth 授权 + 撤销会话 |
| `mass_sharepoint_download` | 从机密网站下载量达到基准的 22 倍 | 通知管理员 + 撤销会话;如升级则完全封禁 |
| `malware_endpoint` | Defender 检测到具有 lsass 注入的凭证窃取程序 | 隔离设备 + 撤销已登录用户的会话 + 强制重置密码 |
模拟租户预置了三个用户 和两台设备。Charlie 是高风险角色 (无 MFA,曾有风险登录记录)。请参见 `src/incident_responder/mocks/entra_state.py`。
## Defender XDR 模式
`--source defender` 会在 Microsoft Graph 上调用 `GET /security/incidents`。
您需要进行 Entra 应用注册,并具备应用程序权限 `SecurityIncident.Read.All` (已由管理员同意)。在 `.env` 中通过 `DEFENDER_TENANT_ID`、`DEFENDER_CLIENT_ID` 和 `DEFENDER_CLIENT_SECRET` 提供凭据。
此路径是**只读的**。响应操作仍然经过模拟层——有意将它们连接到真实的 Graph 变更排除在此演示的范围之外。
## 审计日志
每次运行都会在 `./audit/run-.jsonl` 中写入一个 JSONL 文件,包含:
- `incident_loaded` — 已分类的内容
- `tool_call` — 每次调查工具的调用及其参数和结果
- `action_proposed` — agent 提出的响应及理由
- `approval_decision` — 分析师的批准/拒绝决定
- `mock_executed` — 生成的状态变更 *以及* 在生产环境中本会触发的等效 Graph API 调用
在与 CISO 讨论治理时,此文件就是交付物。
## 项目布局
```
src/incident_responder/
cli.py Typer + Rich CLI
agent.py ChatAgent factory + system prompt
config.py Env-driven config
sources/ Incident sources (local, Defender XDR)
tools/
investigate.py Read-only tools (free for the agent to call)
respond.py Mock response tools (HITL-gated)
audit.py Append-only JSONL writer
mocks/
entra_state.py In-memory tenant state
samples/ Sample incident JSON files
audit/ Generated at runtime
```
## DevUI
MAF 附带了一个基于浏览器的调试器。要在迭代期间检查 agent 跟踪记录:
```
agent-framework devui
```
然后根据 MAF 文档将其指向 agent 模块。
## 演示流程 (建议)
1. 展示警报量问题——快速展示这四个样本事件。
2. 运行 `--incident impossible_travel`。让观众观看 agent 的调查过程,然后大声读出它的推理。
3. **故意拒绝**第一个提议的操作。展示 agent 是如何确认的,审计日志记录了拒绝过程,并且 agent 会转向下一个提案。
4. 批准其余的操作。展示审计日志文件。
5. 运行 `--incident malware_endpoint` 以展示上下文推理——agent 在这里选择了 `isolate_device`,而在之前的事件中并没有。
6. 以治理框架作为总结:HITL 审批门、审计日志、模型可替换性、模拟层。
## 许可证
MIT。
标签:AI安全护栏, AI风险缓解, AI驱动, Defender XDR, Microsoft Agent Framework, Python, 不可能旅行(Impossible Travel), 事件分级, 人机协同(Human-in-the-loop), 参考架构, 合规与治理, 命令行工具(CLI), 大语言模型(LLM), 威胁调查, 安全事件响应, 安全演练与演示, 安全编排自动化与响应(SOAR), 安全运营(SecOps), 审计日志, 无后门, 自动化响应, 逆向工具