agarg30/sentinel-agent

GitHub: agarg30/sentinel-agent

基于 Gemini 和 GitLab MCP 构建的安全与事件响应智能体,通过关联历史安全警告与当前故障日志,实现从代码合并到生产事故的全链路追踪与自动化根因分析。

Stars: 0 | Forks: 0

# SENTINEL — 安全与事件响应智能体 基于 **Gemini** + **Google Cloud Agent Builder** + **GitLab MCP Server** 构建 ## 每个工程团队都熟知的故事 时间是凌晨 2:47。PagerDuty 警报响了。 你的认证服务正在返回 500 错误。用户无法登录。收入正以每分钟 4,000 美元的速度流失。 三名工程师正在电话会议中,拉取日志,用 grep 搜索堆栈跟踪,并在 Slack 上互相沟通。两个小时后,有人找到了原因——在用户查询函数中的一个原始 SQL 查询,这是三周前在 MR !67 中引入的。 真正令人痛心的是这里。 SonarQube 曾经标记过它。就在那个 MR 里。“潜在 SQL 注入 — 第 34 行。”开发者看到了,并添加了一条评论:*“风险低,下个 Sprint 处理”*,然后合并了代码。 这条警告仅仅存活了 4 天——在一个永远不会再有人打开的讨论串里。 然后它消失了。遁入了所有被忽略的 MR 评论所归属的虚无之中。 你的团队已经有了 Copilot。SonarQube。Snyk。Dependabot。每日漏洞电子邮件。一个没人阅读的 Slack 频道。 **工具并没有坏。它们标记了一切。** **问题在于标记之后发生了什么。** 被忽略的警告没有记忆。它们不会跟着代码进入生产环境。它们不会在流水线于凌晨 2:47 崩溃时出现。它们无法将今天的事件与三周前的决定联系起来。 每个团队都淹没在警报中,却没有任何线索将它们与实际的后果联系起来。 **SENTINEL 就是那条线索。** ## SENTINEL 的功能 SENTINEL 并不取代你的扫描器。它会记住扫描器发现的问题——并让你的代码库承担责任。 - **预防模式** — 当 MR 被打开时,SENTINEL 不仅仅发出警告。它会询问:*“这种模式以前引发过事件吗?上个月在这个文件中是否有类似的警告被忽略?”* 它会发布带有上下文的警告,而不仅仅是一个规则编号。 - **响应模式** — 当流水线失败时,SENTINEL 不仅仅读取日志。它会进行搜索:*“哪个被忽略的 MR 警告涉及了这个文件?谁合并了它?他们当时承诺了什么?”* 它能在你的工程师喝完第一口咖啡之前就写好事件报告。 - **记忆循环** — 每一个被忽略的警告都会被追踪。每一个事件都会被追溯到其根源。随着时间的推移,SENTINEL 会知道你的团队忽略了哪些警告——以及哪些警告总是会反过来造成严重后果。 ## 使用 SENTINEL 前后对比 | 情况 | 未使用 SENTINEL | 使用 SENTINEL | |---|---|---| | 打开包含 SQL 注入的 MR | SonarQube 对其进行标记。开发者将其忽略。警告消失。 | SENTINEL **附带历史记录**进行标记:*“此模式在 6 周前曾在此文件中引发过事件。”* | | 开发者忽略警告 | 评论永远埋没在 MR 讨论串中 | 警告被记录、追踪,并链接到相应文件和作者 | | 流水线在凌晨 2 点崩溃 | 3 名工程师,耗时 2 小时,手动 grep 搜索日志 | SENTINEL 读取日志,搜索过往警告,并在几分钟内发布根因分析 + 事件 Issue | | 事件复盘 | “这是怎么通过的?” — 没有人知道 | “MR !67,3 月 3 日,被 @dev 忽略,标记为低风险” — 完整的审计追踪 | | 出现新的安全模式 | 下一个团队犯同样的错误 | SENTINEL 识别出该模式,并在下一次 MR 警告中引用过往事件 | | 月度安全审查 | 手动、缓慢、总是落后 | SENTINEL 一直在实时追踪每一个警告和忽略行为 — 始终保持最新状态 | ## 架构 ``` ┌─────────────────────────────────────────┐ │ GitLab Events │ │ (MR opened / Pipeline failed) │ └──────────────┬──────────────────────────┘ │ Webhook ▼ ┌─────────────────────────────────────────┐ │ SENTINEL Webhook Receiver │ │ (FastAPI on Cloud Run) │ └──────────────┬──────────────────────────┘ │ ┌────────────┴────────────┐ │ │ ▼ ▼ ┌───────────────────────┐ ┌───────────────────────────┐ │ MR Scanner Agent │ │ Incident Responder Agent │ │ (Prevention Mode) │ │ (Response Mode) │ └──────────┬───────────┘ └────────────┬───────────────┘ │ │ ▼ ▼ ┌───────────────────────────────────────────────────────┐ │ Gemini (via Vertex AI) │ │ Reasoning · Analysis · Decision │ └───────────────────────────────────────────────────────┘ │ │ ▼ ▼ ┌───────────────────────────────────────────────────────┐ │ GitLab MCP Server │ │ get_merge_request_diffs · create_workitem_note │ │ get_pipeline_jobs · create_issue · search │ └───────────────────────────────────────────────────────┘ ``` ## 智能体流程 ### 模式 1:预防 (打开 MR) ``` Developer opens MR │ ▼ get_merge_request_diffs ──► Gemini analyzes code for: · SQL injection · Hardcoded secrets · Insecure auth patterns · Vulnerable dependencies │ ▼ create_workitem_note ──► Posts security warning on MR with specific line references │ ▼ Warning stored → tracked for future incident correlation ``` ### 模式 2:响应 (流水线失败) ``` Pipeline fails │ ▼ get_pipeline_jobs ──► Read failure logs │ ▼ search ──► Find past MR warnings touching same files │ ▼ Gemini correlates: "This failure links to warning in MR !X" │ ▼ create_issue ──► Incident report with: · Root cause analysis · Link to original warning · Suggested fix · Post-mortem template ``` ## 技术栈 | 层级 | 技术 | |---|---| | 智能体大脑 | Gemini 2.0 Flash (Vertex AI) | | 智能体编排 | Google Cloud Agent Builder | | 合作伙伴集成 | GitLab MCP Server | | 后端 | Python + FastAPI | | 托管 | Google Cloud Run | | 密钥管理 | Google Secret Manager | ## 安装说明 ### 前置条件 - Python 3.11+ - Google Cloud 账户(项目 ID:参见 `.env`) - 带有 Personal Access Token 的 GitLab 账户 ### 安装说明 ``` pip install -r requirements.txt ``` ### 配置 ``` cp .env.example .env # 使用你的 GitLab token 和 GCP project 详情编辑 .env ``` ### 本地运行 ``` python main.py ``` ## 使用的 GitLab MCP 工具 | 工具 | 用途 | |---|---| | `get_merge_request_diffs` | 读取 MR 代码更改 | | `create_workitem_note` | 在 MR 上发布安全警告 | | `get_pipeline_jobs` | 读取流水线失败日志 | | `create_issue` | 创建事件报告 | | `search` | 查找过去相关的警告 | | `semantic_code_search` | 在代码库中查找易受攻击的模式 | ## 许可证 MIT License — 参见 [LICENSE](LICENSE)
标签:AI安全助手, AMSI绕过, CI/CD安全, CISA项目, DevSecOps, DLL 劫持, Gemini, GitLab MCP, Google Cloud Agent Builder, GPT, Llama, LLM, MCP Server, PagerDuty集成, SIRP, SonarQube, Unmanaged PE, 上游代理, 事件复盘, 代码安全审计, 代码审查, 告警溯源, 大语言模型, 威胁检测, 安全事件响应, 安全合规, 安全左移, 标准输入输出, 漏洞管理, 网络代理, 自动化响应, 逆向工具