[控场AI]
· 15 分钟阅读· 7,961 字

图数据库+AI智能体:GraphGuard如何革新网络安全调查

图数据库+AI智能体:GraphGuard如何革新网络安全调查

GraphGuard 用 FalkorDB 图数据库与约束型 Gemini 智能体,把孤立告警串成可追溯攻击图谱。

GraphGuard 针对 SOC 告警疲劳问题,提出以图数据库 FalkorDB 为核心、Gemini 与 LangChain 构建 AI 智能体的安全调查方案。文章指出安全数据本质上是图而非扁平表格,传统 SIEM 的五层递归 JOIN 在压力下难以完成。系统建模了 8 类节点与 10 种关系,内置 20 多个参数化 Cypher 查询,其中四跳路径追踪、IP 枢纽关联与调查持久化构成调查引擎支柱。为避免 LLM 幻觉,GraphGuard 将智能体限制在 7 个预定义工具内,并强制区分确认事实、推论与未知,同时提供确定性回退引擎。实战中一条低优先级 Tor 出站告警在 3 秒内被升级为威胁支付系统的多阶段数据外泄事件,且调查结果持久化形成跨会话机构记忆。

"Every alert has a story. Follow the graph to find it."

网络安全运营中心(SOC)长期被海量告警淹没,而真正的威胁往往隐藏在看似孤立的告警之间。GraphGuard 项目通过图数据库 FalkorDB 与 AI 智能体(基于 Gemini 和 LangChain)的结合,将碎片化的安全事件转化为可追溯的攻击图谱,让调查时间从数小时缩短至数秒。本文深入解析其架构设计、数据模型与工程实践。

GraphGuard项目封面

告警疲劳的本质:缺乏上下文关联

现代企业安全栈每天产生数千条告警:防火墙拦截、终端触发、认证异常、DNS 峰值……安全团队面临的不仅是数量问题,更是上下文缺失。在传统 SIEM 工具中,告警以孤立表格记录呈现:

Alert ID: A-104
Title: Suspicious Outbound Connection to Known Tor Exit Node
Severity: CRITICAL | Device: WORKSTATION-07

一线分析师看到这条记录,可能认为"只是开发者用了隐私代理",从而降低优先级或关闭。但他无法立即看到:该设备由高风险用户 Marcus Chen 使用;同一设备在 84 分钟前发起了内部端口扫描(A-105);目标 IP 关联着 C2 信标告警(A-106);这些告警同属一个数据外泄事件(INC-001),并直接威胁支付处理服务(SVC-001,关键级)。

在关系型数据库中,还原这条链路需要 5 层递归 JOIN 或复杂日志关联查询——分析师在压力下根本没有时间编写。安全数据本质上是图,而非扁平表格。

SIEM(安全信息与事件管理系统) 是 SOC 的核心基础设施,负责收集、归一化、关联并存储来自防火墙、EDR、身份系统等各类安全设备的日志与告警。传统 SIEM 的优势在于集中化日志检索与基于规则的告警生成,但其数据模型通常以扁平事件表或键值索引为核心,擅长"过滤与匹配",不擅长"多跳关系遍历"。当攻击链跨越设备、用户、IP 和服务等多个实体时,SIEM 需要分析师手动串联或编写复杂的关联规则,这正是告警疲劳的根源之一。图数据库并非要取代 SIEM,而是作为其关系层补充,把 SIEM 产出的离散事件重新组织为可遍历的攻击图谱。

FalkorDB:为 AI 智能体提供图原生动力

GraphGuard 选择 FalkorDB 作为核心存储与计算引擎。它不仅是前端可视化的数据源,更是将离散安全事件转化为互联图谱的"计算大脑"。FalkorDB 的关键特性支撑了调查的实时性与可靠性:

  • 图遍历性能:AI 智能体在调查中需执行 5-7 次顺序查询以发现邻居和攻击路径。FalkorDB 基于 C 语言、兼容 Redis 的架构提供亚 10 毫秒的查询延迟,使调查体验近乎瞬时。
  • OpenCypher 表达力:多跳关系在关系型数据库中需要大量代码,而在 Cypher 中仅需几行声明式查询。
  • MERGE 幂等性:安全环境要求可重复的演示和可靠的数据管道。FalkorDB 对 MERGE 的完整支持确保种子脚本和事件日志更新时不会产生重复实体。
  • 持久化智能体记忆:与无状态 LLM 聊天机器人不同,GraphGuard 将完成的调查和证据作为一等节点(Investigation、Evidence)持久化在 FalkorDB 中。未来会话可直接查询历史调查模式,实现跨会话记忆。

OpenCypher 是一种面向属性图的声明式查询语言,采用 ASCII-art 风格的模式匹配语法,例如 (a:Alert)-[:TRIGGERED]->(d:Device) 直观表达"某设备触发了某告警"。与 SQL 的 JOIN 不同,Cypher 的变长路径匹配(如 [:CONTACTED*1..4])可在单条语句中表达任意深度的遍历,查询长度不随跳数增长而膨胀。FalkorDB 实现了 OpenCypher 的一个子集,并针对稀疏矩阵存储做了优化。对于安全调查而言,这意味着"从一条告警出发,向外扩展四跳找到受影响的关键服务"可以被写成一条可读、可参数化、可审计的查询,而不是数百行递归代码——这也是约束型 AI 智能体能够安全调用图查询的语言基础。

图数据模型:8 种节点与 10 种关系

GraphGuard 将安全运营建模为属性图,包含 8 类节点:User、Device、IPAddress、Alert、Incident、Service、Investigation、Evidence;以及 10 种关系:USES、CONTACTED、TRIGGERED、ASSOCIATED_WITH、PART_OF、AFFECTS、INVOLVED_IN、EXAMINED、USED_EVIDENCE、SUPPORTS。

数据库预置了 27 个基础实体和 28 条关系,覆盖三个真实场景:

  • 场景 A(多跳入侵链):告警 A-104 串联 Marcus Chen、WORKSTATION-07、Tor IP 185.220.101.45、事件 INC-001 及支付处理服务。
  • 场景 B(财务凭证攻击):Ryan Patel、LAPTOP-45、可疑 IP 192.0.2.99、失败登录告警 A-301 及影响内部财务系统的事件 INC-002。
  • 场景 C(良性基线):Alice Thompson、LAPTOP-22、Google DNS 8.8.8.8 及误报告警 A-201,证明 AI 不会将所有事件标记为恶意。

这种设计让智能体能够在明确的关系上精确遍历,而非依赖向量相似度进行猜测。

Cypher 实战:驱动调查的核心查询

GraphGuard 内置了 20 多个参数化 Cypher 查询库,其中三个查询构成调查引擎的支柱:

1. 追踪四跳攻击路径(TRACE_INCIDENT_PATH)
当分析师选择告警后,单条查询向外遍历四跳,映射设备、联系 IP、相关告警、事件及受影响的关键服务:

MATCH (a:Alert {id: $alert_id})
OPTIONAL MATCH path1 = (d:Device)-[:TRIGGERED]->(a)
OPTIONAL MATCH path2 = (u:User)-[:USES]->(d)
OPTIONAL MATCH path3 = (d)-[:CONTACTED]->(ip:IPAddress)
OPTIONAL MATCH path4 = (ip)-[:ASSOCIATED_WITH]->(related_a:Alert)
OPTIONAL MATCH path5 = (a)-[:PART_OF]->(inc:Incident)
OPTIONAL MATCH path6 = (inc)-[:AFFECTS]->(svc:Service)
OPTIONAL MATCH path7 = (u)-[:INVOLVED_IN]->(inc)
RETURN a.id AS start_alert_id, a.title AS start_alert_title,
       d.hostname AS hostname, u.name AS user_name, u.risk_level AS user_risk_level,
       ip.address AS ip_address, ip.reputation AS ip_reputation,
       related_a.id AS related_alert_id, related_a.title AS related_alert_title,
       inc.id AS incident_id, inc.title AS incident_title,
       svc.name AS service_name, svc.criticality AS service_criticality

2. 发现隐藏的枢纽连接(FIND_RELATED_ALERTS_VIA_IP)
两条告警可能因时间或端点不同而看似无关。通过联系 IP 地址进行枢纽查询,FalkorDB 能揭示隐藏关联:

MATCH (a:Alert {id: $alert_id})<-[:TRIGGERED]-(d:Device)-[:CONTACTED]->(ip:IPAddress)-[:ASSOCIATED_WITH]->(other:Alert)
WHERE other.id <> $alert_id
RETURN other.id AS alert_id, other.title AS title, other.severity AS severity,
       other.category AS category, other.timestamp AS timestamp,
       ip.address AS via_ip, ip.reputation AS ip_reputation
LIMIT $limit

3. 持久化跨会话记忆(SAVE_INVESTIGATION)
调查结束后,发现被提交至 FalkorDB,任何分析师次日均可恢复调查:

MERGE (inv:Investigation {id: $inv_id})
SET inv.question = $question,
    inv.summary = $summary,
    inv.created_at = $created_at,
    inv.outcome = $outcome,
    inv.recommended_steps = $recommended_steps,
    inv.severity_assessment = $severity_assessment
RETURN inv.id

解决方案架构:安全与认知完整性

GraphGuard 将 FalkorDB 与 Google Gemini(gemini-3.8-flash)及 LangChain 结合,构建交互式调查平台。系统分为四层:Streamlit Web 界面 → Agent 服务(Gemini + LangChain)→ 图与调查服务层(确定性编排、证据完整性、记忆)→ FalkorDB 图数据库。

网络安全 AI 智能体的一个主要陷阱是"压力下的幻觉"——LLM 编造 IP 地址或做出无根据的断言。GraphGuard 通过严格护栏解决此问题:

  • 预定义安全工具注册表:LLM 从未获得直接执行 Cypher 的权限,只能调用 7 个结构化工具(get_alert_details、investigate_device、find_related_alerts、trace_incident_path、get_affected_services、save_investigation、get_previous_investigation)。
  • 事实与推论的明确分离:界面严格区分"确认事实"(直接来自验证过的 Cypher 查询结果,如"WORKSTATION-07 连接了 185.220.101.45")、"推论"(LLM 生成的假设,必须前缀 INFERRED)以及"未知"(图尚未回答的开放问题)。
  • 无自主破坏性操作:GraphGuard 作为防御性决策支持系统运行,所有推荐操作均需人工审核。
  • 确定性回退引擎:如果 Gemini API 密钥缺失或外部 API 不可达,系统自动回退到确定性图调查编排器,确保 SOC 连续性不受影响。

LLM 幻觉指大语言模型在缺乏依据时生成看似合理但事实错误的内容,在安全场景中表现为编造不存在的 IP、告警 ID 或因果关系。业界常用的缓解手段包括检索增强生成(RAG)、工具调用(function calling)与结构化输出约束。GraphGuard 采用的是"工具约束 + 证据锚定"路线:模型不接触原始 Cypher,只能从固定工具集中选择,且每个工具返回的都是数据库真实查询结果。这与"让模型自由生成查询再执行"的开放代理形成对比——后者灵活性更高,但会引入查询注入、性能失控与不可复现的风险。在需要可审计、可追责的 SOC 环境中,牺牲部分灵活性换取确定性是合理的工程权衡。

用户体验:四个直观视图

基于 Streamlit 构建的 GraphGuard 提供四个专用工作区:

📊 概览仪表板:实时 FalkorDB 指标(节点与关系计数、活跃事件、告警严重性、系统健康状态)。

🔍 调查工作区:分析师选择告警(如 A-104)或输入调查问题。数秒内,GraphGuard 查询 FalkorDB,激活 Gemini 智能体,输出完整事件叙事、图证据路径、相关告警、受影响服务及防御建议。

🕸️ 图探索器:基于 Plotly 的交互式 2D 布局,分析师可视觉检查节点(按类型颜色编码),点击查看属性,追踪入边和出边。

📁 调查历史(持久记忆):通过查询存储在 FalkorDB 中的历史 Investigation 节点,展示跨会话记忆。分析师可追问"之前调查 A-104 时发现了什么?"并回顾先前发现。

实战演练:调查告警 A-104

以下是 GraphGuard 在一次实时调查中的精确流程:

Alert A-104 (Outbound Tor)
        │ [TRIGGERED]
        ▼
  WORKSTATION-07 ────────[USES]────────► Marcus Chen (HIGH Risk)
        │ [CONTACTED]
        ▼
  185.220.101.45 (Tor Exit) ────[ASSOCIATED_WITH]────► Alert A-106 (C2 Beacon)
        │ [PART_OF]
        ▼
  Incident INC-001 (Data Exfiltration)
        │ [AFFECTS]
        ├────────► Payment Processing Service (CRITICAL)
        └────────► HR Employee Portal (HIGH)

步骤 1:智能体执行 get_alert_details("A-104"),发现告警源自 WORKSTATION-07。
步骤 2:调用 investigate_device("D-001"),揭示设备由高级开发人员 Marcus Chen(高风险)使用,且此前触发过 A-105(内部端口扫描)。
步骤 3:执行 trace_incident_path("A-104"),追踪到 IP 185.220.101.45(信誉:恶意,荷兰活跃 Tor 出口节点)。
步骤 4:枢纽查找相关告警,发现该 IP 还关联告警 A-106:C2 信标尝试。
步骤 5:路径连接至事件 INC-001,直接影响支付处理服务。
步骤 6:GraphGuard 将完整调查记录保存至 FalkorDB 以供未来参考。

不到 3 秒,一条低优先级出站连接告警被升级为已验证的多阶段数据外泄活动,威胁金融基础设施。

为何值得采用 GraphGuard

  • 解决数据孤岛问题:攻击者以图思维行动,防御者却常看列表。GraphGuard 通过匹配攻击者的关联思维来拉平战场。
  • 降低 MTTD/MTTR:分析师无需在 4 个浏览器标签间手动交叉比对 IP 黑名单、终端日志和 Active Directory 层级,单次查询即可获得完整关联上下文。
  • 消除高风险环境中的 AI 幻觉:通过将智能体锚定在真实 Cypher 查询输出上,并强制事实与推论分离,分析师可以信任建议。
  • 持续机构记忆:SOC 团队人员流动常导致调查上下文丢失。将调查持久化在 FalkorDB 中,构建随每次事件调查而变得更聪明的组织图大脑。

关键工程经验

  • 图数据库是 LLM 的天然上下文引擎:给 LLM 原始文档或扁平表格,它只能猜测关系;给 LLM 图数据库,它便能以手术级精度遍历显式验证的关系。
  • 约束型代理构建稳健软件:在生产环境中,运行任意 Cypher 的无限制 AI 代理是危险的。将代理限制在确定性、参数化查询工具上,可产生 100% 可靠的结果并防止注入风险。
  • 幂等性是王道:使用 Cypher MERGE 子句设计种子脚本,节省了数小时重置时间,并确保 14 个自动化单元测试可靠运行。

MERGE 幂等性是图数据库数据管道设计中的关键细节。MERGE 的语义是"匹配则复用、否则创建",但在并发写入或属性更新场景下,若使用不当仍可能产生重复节点或意外覆盖。GraphGuard 的实践表明,将种子脚本与事件日志更新统一设计为基于唯一 ID 的 MERGE 操作,可使重复执行不改变最终状态,从而支持演示重置、测试重跑与增量数据同步。这一性质对 AI 智能体尤为重要:智能体可能因重试或多轮对话重复提交同一调查记录,幂等写入保证记忆层不会因重复调用而污染,也让自动化单元测试的结果具备可重复性。

验证与代码质量

GraphGuard 并非原型演示,而是端到端测试过的产品:14 个单元测试通过,覆盖配置安全、Cypher 查询格式化、确定性编排和模式验证;自动化健康检查 6/6 通过,验证实时云数据库连接、种子数据完整性、多跳查询解析及 Gemini API 可用性。

项目资源

GraphGuard 展示了图数据库与 AI 智能体结合的潜力:不是用 LLM 替代分析师,而是为其提供可验证的关联上下文,让安全调查从"翻找告警"变为"跟随图谱"。

#图数据库#FalkorDB#AI智能体#网络安全调查#GraphGuard#Cypher查询#告警疲劳#LangChain
分享:

相关推荐