安全运营中心里有一条不成文的规矩:先处理高危和中危告警,低危的等有人手再说。这不是懒政,是面对海量告警的无奈妥协。Databricks的安全团队过去也这么做,直到他们用17个专长代理把低危告警的真阳性率推至高危告警的10倍——6,500个小时的分析师工时在一个月内蒸发,低严重度从前是个没人在意的角落,突然变成了发现真实威胁的新富矿。
正方意见很扎实。每天数千条安全告警涌进中央告警表,来自端点安全、云活动日志、威胁情报等各种管道,分析师的时间是固定分母。告警严重度评估本就由既有规则和签名产出,高危和中级至少经过了第一层筛选,命中真正恶意活动的概率理当更高。因此优先投入人力复盘高危和中级,低危留作弹性排程,这是绝大多数安全团队的精益实践。在Databricks内部,这份优先级名单也曾长期照章运行。
反方逻辑则戳中一个尴尬的盲区:高级持续威胁从不标注自己的严重度。低危告警里混杂着大量噪音,但也掩埋着攻击者刻意压低声响的侧向移动、凭证窃取或异常查询。当一支安全团队的系统每天吐出90%以上的低危告警,而分析师只能覆盖其中的零头时,这些告警就成了攻击者的免费隐蔽通道。扩大分析师编制、调高告警门槛从而接受视野缺损,或是寻找新的自动化路径,三个选项里Databricks挑了最后一个——让能推理、能自主判断的代理来担纲低危分组。
第一个版本朴素得近乎天真:把所有告警的相关数据揉进一个提示,扔给基础模型让它决定该升级哪条。结果升级率冲到50%,等于把一半告警转手丢还给人类分析师——这不是分类,是给噪音换了件马甲。失败的关键在于上下文缺失。一个通用代理面对四面八方涌来的告警,无从辨别每一种来源的“异常”长什么样。每条告警的真假阳性模式、行为基线、需要拉取的富化数据,全部根植在该告警源头的本地语境里。离开这份源头专用的上下文,模型的输出只能依赖通用网络安全知识打转,而这远远不够。
Databricks随后把思路倒了过来:放弃做一个全能裁判,转而训练一群精通单一来源的专家代理。他们最终搭建了17个来源特定分类代理,每个只对口一种告警源。这些代理跑在Spark Structured Streaming上,实时处理流数据;前端用确定性过滤削掉最明显的噪声,背后还调度一个共享的威胁情报代理,在需要时拉取IOC进行富化。每次判断都不再是一句笼统的“该告警是否危险”,而是基于该源头的历史误报分布、常态行为基线和按需注入的外部情报,做出精准到单条告警的分级决策。
结果在一个月内就给出了强信号。Databricks的低危告警实现了全量自动化分类,期间挑出的真实攻击比例比同期高危和中级告警高出整整10倍。这意味着,过去被系统压低严重度标签的攻击行为,有相当比例恰恰是传统分级模型漏掉的高级货。6,500多个分析师小时被还给安全工程和主动猎杀,而不是消耗在翻找告警堆上。
这场实验最值得琢磨的启发,不是代理又抢了人类的工作,而是专业分工在AI时代的回潮。当一个总模型试图吞下所有告警源时,它学到的不过是统计学上的均值;17个小型专长代理各自深耕一亩三分地,反而在各自的局部世界里获得了堪比资深分析师的判断力。低危不再等于低优先级——这个反常识的结论背后,是上下文壁垒战胜了通用知识的朴素叙事。对于还在用人力死磕告警积压的团队,Databricks的实践或许在说:别急着调高告警阈值,先把专长代理请进SOC,低危那个“灰姑娘”角落,可能正藏着最值钱的威胁线索。
热门跟贴