AfkarIsh/SentinelFlow
GitHub: AfkarIsh/SentinelFlow
一个基于 Google ADK 和 Gemini 1.5 Flash 构建的多 Agent SOC 事件响应系统,通过顺序编排三个智能体自动完成日志分析、威胁研判和报告审核,输出经过验证的修复蓝图。
Stars: 0 | Forks: 0
# SentinelFlow
SentinelFlow 是一个后端优先的单页 Streamlit 演示项目,它展示了一个多 Agent 的 SOC 事件响应 pipeline。它是为黑客松提交而设计的,目标是在终端和屏幕上展示一个成功的多 Agent 执行过程,而无需构建单独的前端应用程序。
## 功能
SentinelFlow 接收一个可疑的日志包,通过一个顺序执行的多 Agent workflow 对其进行分析,并返回最终批准的事件蓝图。
输出内容包括:
- 事件摘要
- 严重性级别
- 攻陷标示
- 攻击时间线
- 可能的攻击模式
- 建议的修复措施
- 审核人批准备注
## 项目结构
该项目有意保持极简。
- `app.py` 包含 Streamlit UI 和后端调查 pipeline。
- 没有数据库。
- 没有独立的前端框架。
- 没有 Docker 配置。
## 架构
该应用使用了一个简单的顺序执行 pipeline:
1. `LogInvestigator`
2. `ThreatReasoner`
3. `ReportReviewer`
代码编写支持在两种模式下运行:
- 当 `GOOGLE_API_KEY` 可用时的 ADK 模式
- 当没有凭据时的本地 fallback 模式
这使得该演示在截止日期前使用更加安全,因为即使 Google 模型路径不可用,应用仍然可以运行。
## Agent 工作原理
### 1. LogInvestigator
角色:Tier-2 SOC 分析师。
该 Agent 检查原始日志并提取证据,例如:
- 可疑 IP 地址
- 用户名
- 失败的登录尝试
- 成功的登录事件
- 提权活动
- 可疑命令
它还会构建一个简洁的事件时间线。
### 2. ThreatReasoner
角色:事件指挥官。
该 Agent 审查调查员的发现,并将其转化为结构化的事件简报。它对可能的攻击向量进行分类,评估严重性,解释影响,并建议遏制和修复措施。
### 3. ReportReviewer
角色:高级安全架构师。
该 Agent 审查事件简报的真实性和一致性,删除不受支持的说法,并批准最终报告。
## UI 概述
Streamlit 页面有意保持极简和灰度风格:
- 标题:SentinelFlow
- 副标题:多 Agent SOC 事件响应系统
- 用于输入可疑日志的文本区域
- 运行调查按钮
- 三个 Agent 卡片
- 标记为“顺序执行多 Agent Pipeline”的工作流卡片
- 最终批准的事件蓝图面板
该页面的设计方便在黑客松演示中进行截图。
## 运行时要求
建议:
- Python 3.11 或更高版本
使用的包:
- streamlit
- google-adk
- google-genai
## 安装说明
在安装和运行时请使用同一个 Python 解释器。
```
python -m pip install streamlit google-adk google-genai
```
如果你想使用 Google 模型路径,请添加一个包含你密钥的本地 `.env` 文件:
```
GOOGLE_API_KEY=your_key_here
```
该文件会被 git 忽略,因此你的个人密钥将保留在本地。如果未设置该变量,应用将使用本地的顺序 fallback。
## 运行说明
```
python -m streamlit run app.py
```
如果端口 8501 被占用,请使用其他端口:
```
python -m streamlit run app.py --server.port 8502
```
如果你的系统需要特定的解释器路径,请将 `python` 替换为你本地的 Python 可执行文件。
## 示例输入
该应用包含一个默认的 SOC 日志样本:
```
[LOG] 2026-05-29T21:00:05Z - sshd[4112]: Failed password for invalid user root from 203.0.113.195 port 49210 ssh2
[LOG] 2026-05-29T21:00:10Z - sshd[4112]: Failed password for invalid user root from 203.0.113.195 port 49214 ssh2
[LOG] 2026-05-29T21:01:45Z - sshd[4122]: Accepted password for developer from 203.0.113.195 port 49302 ssh2
[LOG] 2026-05-29T21:02:12Z - sudo: developer : TTY=pts/1 ; PWD=/home/developer ; USER=root ; COMMAND=/usr/bin/apt-get install netcat
```
## 预期终端输出
当调查运行时,终端会打印阶段横幅,例如:
```
[SentinelFlow] LogInvestigator: analyzing raw logs
[SentinelFlow] ThreatReasoner: building incident brief
[SentinelFlow] ReportReviewer: validating and approving the brief
```
该输出是你可以在终端截图中捕获的内容,用于证明多 Agent pipeline 已成功执行。
## 截图清单
为了提交一张清晰的黑客松截图,请展示:
1. 页面标题和副标题。
2. 包含日志的文本区域。
3. 运行调查按钮。
4. 工作流卡片。
5. 三个 Agent 卡片。
6. 最终批准的事件蓝图。
7. 带有阶段横幅的终端输出。
## 故障排除
如果应用无法启动:
- 在同一个 Python 环境中重新安装 Streamlit 和 ADK 包。
- 验证 `google.adk` 和 `google.genai` 是否能正确导入。
- 检查是否存在名为 `google.py`、`streamlit.py` 或 `google/` 的本地文件,这些文件可能会覆盖已安装的包。
- 如果未设置 `GOOGLE_API_KEY`,应用仍将使用本地 fallback pipeline 运行。
## 为什么此提交是安全的
此实现非常适合在截止日期前提交,因为它:
- 将可执行的应用保留在一个文件中
- 避免了前端的复杂性
- 在有凭据时使用已安装的 ADK 运行时路径
- 在没有凭据时仍然可以工作
- 打印清晰的终端阶段横幅以提供截图证明
- 生成看起来像真实 SOC workflow 结果的最终批准事件蓝图
## 备注
当前代码有意倾向于稳定性而非过度设计。如果你想稍后对其进行扩展,最简单的下一步是添加结构化的模型输出或更丰富的证据解析器,但这对于黑客松提交来说并不是必需的。
标签:AI安全, Chat Copilot, Kubernetes, PyRIT, SOC分析, Streamlit, Web报告查看器, 多智能体系统, 库, 应急响应, 自动化分类, 访问控制, 逆向工具