3、事件检测与初步分析:日志收集、异常检测指标、AI模型行为监控、告警阈值设定

好,咱们进入实战演练的第三个环节——事件检测与初步分析。

说实话,很多团队在AI安全上栽跟头,不是栽在防御不够强,而是栽在「出了事根本不知道」。你想想看,攻击者都把你的模型偷走了,你的监控面板上还显示「一切正常」,这多可怕。

我个人习惯,把检测阶段比作「医院的体检中心」。你不能等病人倒下了才去抢救,得在日常就监测各项指标。下面我拆开来讲。

3.1 日志收集:你的第一道防线

日志这东西,平时没人爱看,但出事的时候它就是命根子。

我在项目中遇到过一家金融公司,模型被投毒了整整两周才发现。为什么?因为他们只收集了API调用日志,根本没记录模型内部的推理分布变化。后来我们复盘时,所有人都拍大腿——数据其实早就异常了,只是没人去捞。

AI安全事件中,必须收集的日志类型:

  • 访问日志:谁、什么时间、从哪个IP、调用了哪个模型接口。
  • 推理日志:每次请求的输入特征、输出结果、置信度分数。
  • 训练日志:训练数据的来源、批次分布、loss变化曲线。
  • 系统日志:GPU/CPU利用率、内存占用、网络流量。
我的小技巧: 日志格式一定要统一。我见过最头疼的情况,就是三个团队用了三种日志格式,写告警规则时简直想骂人。建议直接用JSON格式,字段名标准化,比如 timestamp、event_type、model_id。

3.2 异常检测指标:盯住这几个数字

日志收上来了,然后呢?你得知道看什么。不是所有波动都是攻击,但有些指标一旦异常,基本可以断定出事了。

我重点关注的四大核心指标:

指标名称 正常范围 异常信号 可能的安全事件
请求频率(QPS) 基线 ± 20% 突然飙升或骤降 DDoS攻击 / 模型窃取
输出置信度分布 符合历史分布 置信度普遍偏高或偏低 对抗样本 / 模型后门触发
输入特征分布 训练集分布范围内 出现OOD(分布外)数据 数据投毒 / 提示注入
模型响应延迟 P99 < 500ms 延迟突然增大或减小 资源耗尽 / 模型被篡改

为什么会这样?举个例子。如果攻击者正在用你的模型做「模型窃取」,他会疯狂发送查询请求,试图通过输入输出对来复制你的模型。这时候QPS会异常升高,而且输出置信度往往比较稳定——因为他在试探边界,而不是正常使用。

重点: 不要只看单一指标。单个指标波动可能是巧合,但两个以上指标同时异常,基本可以实锤了。

3.3 AI模型行为监控:不止看日志

日志是死的,模型行为是活的。我建议在模型层面部署专门的监控探针。

我常用的三种监控手段:

  1. 影子模型对比:部署一个与生产模型结构相同、但参数冻结的「影子模型」。每次请求同时喂给两个模型,如果输出差异超过阈值,立刻告警。嗯,这招抓对抗样本特别灵。
  2. 嵌入空间监控:把输入特征映射到向量空间,实时计算新输入与历史输入的余弦距离。距离突然变大,说明有人在搞事情。
  3. 梯度监控(仅限训练阶段):监控梯度的范数和方向。如果某个batch的梯度突然异常大,或者方向与之前完全相反,大概率是投毒样本进来了。
避坑指南: 我曾经在监控系统里直接用了生产模型的输出作为判断依据,结果模型被攻击后,监控也跟着「瞎了」。记住,监控系统必须与被监控对象解耦,最好用独立的模型或规则引擎。

3.4 告警阈值设定:别让狼来了

阈值设得太低,告警刷屏,运维团队直接摆烂。阈值设得太高,真出事时黄花菜都凉了。这里面的平衡,说白了就是经验活。

我总结的阈值设定三步法:

  • 第一步:跑基线。至少收集7天的正常流量数据,算出每个指标的均值、标准差、P95、P99。
  • 第二步:动态阈值。别用死数字。比如QPS的阈值可以设为「均值 + 3倍标准差」,并且每24小时自动更新一次。
  • 第三步:分级告警。黄色告警(需关注)用P95,红色告警(立即响应)用P99。我习惯再加一个「紧急告警」——两个以上指标同时触发红色阈值。
# 伪代码示例:动态阈值计算
import numpy as np

def calculate_threshold(history_values):
    mean = np.mean(history_values)
    std = np.std(history_values)
    yellow_threshold = mean + 2 * std   # 黄色告警
    red_threshold = mean + 3 * std      # 红色告警
    return yellow_threshold, red_threshold

# 实际使用时,每5分钟滑动窗口计算一次
我的经验: 刚开始做告警时,我恨不得把所有指标都加上阈值。结果第一天就收到了2000条告警,全是误报。后来我学乖了——先只监控「输出置信度分布」和「请求频率」两个指标,跑两周稳定了再逐步加。少即是多。

好了,事件检测这块就聊到这儿。记住一句话:你监控得越细,响应得越快。下一章咱们聊聊拿到告警后,怎么快速确认是不是真的攻击——嗯,那才是真正考验人的时候。