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报告查看器, 多智能体系统, 库, 应急响应, 自动化分类, 访问控制, 逆向工具