shiwani42/Mike

GitHub: shiwani42/Mike

一个 Splunk 原生的机构记忆智能体,将 SOC 分析师的告警处置推理过程转化为可持久化、可查询的知识图谱,解决高级分析师离职导致的心智模型和上下文流失问题。

Stars: 0 | Forks: 0

# 机构记忆智能体 (`ima`) 一个 Splunk 原生的智能体,能够将 SOC 分析师的推理过程转化为可查询的机构知识图谱,并可通过 SPL、Python CLI 和 Model Context Protocol 服务器进行访问。 ## 缘由 现有的 SIEM 工具只会捕获*事件*,但没有人去捕获*分析师的推理过程*。当高级 SOC 分析师离职时,他们的心智模型——哪些告警是由定时批处理作业产生的、哪些高管在国际旅行、哪些子网在进行授权的渗透测试——也随之被带走。`ima` 会监控分析师的决定及其原因,通过针对安全领域微调的 LLM 对这些决定进行聚类,并将生成的机构记忆作为 Splunk 内部的一等数据界面提供服务。 ## 具体功能 ``` analyst closes alert → ima asks "why?" (10-second prompt) ↓ annotation lands in KV Store (ima_annotations) ↓ | imabuild → clusters by (event_type, disposition) and calls Foundation-Sec-1.1-8B ↓ structured knowledge entry in ima_knowledge ↓ new analyst asks → | imaquery question="finance Monday" "what do we know → returns: "Finance batch job triggers failed-auth about X?" bursts every Monday 6am." conf=1.0 ×3 evidence ``` ## 快速开始(协作者 - 请先阅读此内容) **前置条件**:Python 3.10+,在本地 `:8089` 端口运行的 [Splunk Enterprise](https://www.splunk.com/en_us/download/splunk-enterprise.html),用于本地 LLM 的 [Ollama](https://ollama.com)。 ``` git clone cd Splunk_agentic_ops .\bootstrap.ps1 # Windows. macOS/Linux: ./bootstrap.sh notepad .env # paste your SPLUNK_TOKEN (see below) .\.venv\Scripts\Activate.ps1 ima auth check ima kv init ima demo seed --clear ima knowledge build # ~3 min on CPU ima knowledge query "finance" ``` 获取 Splunk 身份验证 token:Splunk Web → **Settings → Tokens → New Token**。User:`admin`,audience:任意,expires:90 天以上。 引导脚本会创建 `.venv`,以可编辑模式安装 CLI,将 `.env.example` 复制为 `.env`,并在尚未安装的情况下拉取 Ollama 模型。 ## 安装 Splunk 应用 CLI 是开发测试工具。Splunk 原生部署位于 `splunk_app/ima/`。有一个辅助脚本可以一步完成提权、复制和重启操作——打开 **Administrator** PowerShell,`cd` 进入该仓库,然后运行: ``` .\install_splunk_app.ps1 ``` (如果你愿意,手动操作的等效命令为:`Copy-Item -Recurse -Force ".\splunk_app\ima" "C:\Program Files\Splunk\etc\apps\"; & "C:\Program Files\Splunk\bin\splunk.exe" restart`) 重启后,打开 Splunk Web → Apps → **Institutional Memory Agent** 查看仪表板,并直接尝试自定义搜索命令: ``` | imaquery question="finance" | imaaboutasset asset="acct-prod-01" | imaannotate alert_id="NOTABLE-2024-09-21" disposition="false_positive" ` reason="Finance batch job again, Monday 6am" ` asset="acct-prod-01" event_type="failed_auth_burst" | imabuild ``` ## 仓库布局 ``` . ├── ima/ # Python CLI (dev tool) │ ├── cli.py # Typer entrypoint │ ├── config.py # .env loader │ ├── splunk_client.py # splunk-sdk Service │ ├── kvstore.py # KV Store helpers │ ├── llm/foundation_sec.py # Ollama / Splunk-hosted client │ └── commands/ # auth, kv, alerts, knowledge, demo ├── splunk_app/ima/ # Splunk app (production deployment surface) │ ├── bin/ # 3 custom search commands │ ├── default/ # collections, commands, transforms, dashboard XML │ └── README.md ├── bootstrap.ps1 / bootstrap.sh # one-command collaborator setup ├── pyproject.toml # installs the `ima` console script ├── .env.example # config template; .env is gitignored ├── ARCHITECTURE.md # data model, design choices, why-not-SOAR ├── LICENSE # MIT └── README.md # this file ``` ## 将 IMA 暴露给外部 AI 智能体 (MCP) 同样的知识图谱也可作为 Model Context Protocol 工具使用,因此任何 MCP 客户端——Claude Desktop、SAIA Agent Mode、自定义智能体——都可以原生查询机构记忆。 暴露了四个工具:`query_knowledge(question)`、`record_annotation(alert_id, disposition, reason, ...)`、`list_recent_annotations(limit)`、`build_knowledge()`。 **作为 stdio 服务器运行**(适用于 Claude Desktop / IDE 客户端): ``` ima mcp serve ``` **作为 HTTP 运行**(适用于远程自主智能体): ``` ima mcp serve --http --port 8765 ``` **Claude Desktop 配置** - 编辑 `%APPDATA%\Claude\claude_desktop_config.json` 并添加: ``` { "mcpServers": { "ima": { "command": "C:\\Users\\shmishra\\Documents\\Splunk_agentic_ops\\Splunk_agentic_ops\\.venv\\Scripts\\python.exe", "args": ["-m", "ima.cli", "mcp", "serve"] } } } ``` 重启 Claude Desktop;IMA 工具即可在任何对话中使用。询问智能体“SOC 对 acct-prod-01 了解多少?”,它就会为你调用 `query_knowledge`。 ## 它如何使用 Splunk 的 AI 技术栈 | Splunk 界面 | `ima` 如何使用它 | |---|---| | **KV Store** | 三个集合——`ima_annotations`、`ima_knowledge`、`ima_assets`——在 `splunk_app/ima/default/collections.conf` 中声明,用作知识图谱的持久化层。 | | **Custom Search Commands** (Python SDK 3.0) | `\| imaannotate`、`\| imabuild`、`\| imaquery`——一等 SPL 命令,因此任何保存的搜索、仪表板或分析师都可以触发 IMA。 | | **Foundation-Sec-1.1-8B** | 抽取 prompt + JSON schema 指向 Splunk 托管的 Foundation-Sec 模型。本地开发在 Ollama 托管的 Llama-3.1-8B 替代品上运行(开发机上没有 GPU);只需修改一行 `.env` 即可切换到 Splunk 托管的端点。 | | **Simple XML 仪表板** | `ima_overview.xml` 为 SOC 提供了一个统一面板:贡献者统计、处置分布、知识表格以及交互式的“询问智能体”输入框。 | | **MCP Server** | 位于 `ima/mcp_server.py` 的独立 Python MCP 服务器暴露了四个工具(`query_knowledge`、`record_annotation`、`list_recent_annotations`、`build_knowledge`)。使用 `ima mcp serve` 运行——Claude Desktop、SAIA Agent Mode 以及任何 MCP 客户端都可以原生查询机构记忆。 | 有关完整的设计,请参阅 **[ARCHITECTURE.md](ARCHITECTURE.md)**。 ## 为什么这不是一个 SOAR 剧本 SOAR 用于自动化*操作*——封禁此 IP,隔离此 endpoint。IMA 用于捕获和查询*推理过程*——*为什么高级分析师上个季度将此类告警作为误报关闭了?* 它们是互补的界面,而不是替代品。 ## 作者 - **Shiwani Mishra** - **Saurabh Gupta** 两人对设计和实现做出了同等贡献。 ## 许可证 MIT - 请参阅 [LICENSE](LICENSE)。
标签:AI风险缓解, DLL 劫持, MCP, SOC分析, 大语言模型, 安全管理, 逆向工具