切换深色模式
第 9 章:准确率 99.9% 的身份风控,为什么可能一个攻击也抓不到?
本章主线:从类别不平衡的反直觉结果出发,建立数据、传统 ML、图分析、LLM/RAG、评估和治理的完整方法。
先做一道数据题
一百万次登录里有一千次攻击。模型把全部请求都判为正常,accuracy 是多少?答案是 99.9%,但 recall 为 0。
小安由此明白:AI 项目不能从“上哪个模型”开始,要从威胁、错误成本、数据和可执行动作开始。没有正确评估,漂亮指标可能只是没有做事。
学习目标与工具边界
学完后能:建立时间切分数据集;解释 precision/recall/校准;选择规则、树模型、图或 LLM;设计 ACL-aware RAG;建立离线/在线 eval;识别隐私、公平和提示注入风险。
本章不要求从零训练大模型。工程重点是把模型放进可验证、可观测、可回滚的系统。
9.1 先定义 AI 在身份安全中的角色
AI 适合从复杂信号中排序、归因、发现模式和辅助调查;确定性协议验证、密码学检查、硬权限边界和最终高风险执法仍应由可验证代码与策略承担。
一个稳健原则:模型提供“证据与建议”,策略引擎决定“允许的动作集合”,人或受控自动化完成高风险处置。
9.2 数据与统计基础
必须掌握:条件概率、贝叶斯直觉、均值/方差/分位数、相关与因果、抽样偏差、假阳/假阴、置信区间、数据漂移。
分类四格:
| 真实攻击 | 真实正常 | |
|---|---|---|
| 判为攻击 | TP | FP |
| 判为正常 | FN | TN |
- Precision = TP/(TP+FP):告警中多少是真的。
- Recall = TP/(TP+FN):真实攻击抓到多少。
- 极不平衡场景优先看 PR 曲线、分层指标和每千用户误报,不只看 accuracy/ROC-AUC。
阈值是业务决定:支付转账漏报代价高;员工登录误封会造成大面积停工。可对不同资源使用不同阈值和动作。
9.2.1 用期望成本选阈值
text
expected_cost(t)
= FN(t) × missed_attack_cost
+ FP(t) × user_friction_cost
+ review_volume(t) × analyst_cost成本不一定能精确货币化,但显式列出能避免只优化单一指标。对阻断、step-up、只告警可分别选阈值。
9.2.2 校准
将预测分数按区间分桶,比较平均分数与真实发生率。若 0.8 分桶只有 5% 攻击,分数不能直接当概率用于业务决策。使用 reliability diagram、Brier score,并在数据漂移后复查。
9.3 特征工程
登录特征示例:过去 1h/24h 失败数、IP/ASN 新颖度、设备首次出现、地理速度、认证器强度、会话年龄、同 IP 涉及账号数、资源敏感度。
避免数据泄漏:不能把攻击发生后才知道的封禁结果作为训练输入;时间切分时训练只看当时可用信息。特征记录版本、来源、延迟、缺失率和隐私用途。
9.3.1 在线/离线一致性
训练代码按完整历史统计“过去 24 小时”,线上却因事件延迟只看到 20 小时,会产生 training-serving skew。共享特征定义或做 point-in-time correct join;监控线上特征分布、缺失和延迟。
9.3.2 标签
确认 ATO 的工单标签可能偏向已被发现的大客户;用户误报、调查延迟和后续退款都会造成 noisy labels。记录标签来源、置信度、确认时间,训练时避免用未来确认信息泄漏。
9.4 传统 ML 路线
- 规则基线;
- Logistic Regression 建立可解释基线;
- Gradient Boosted Trees 处理非线性表格特征;
- Isolation Forest/聚类用于候选发现;
- 图算法处理身份—权限—资源关系;
- 深度序列模型仅在数据规模和增益证明后采用。
模型校准很重要:0.8 分数应近似对应同分桶真实风险,否则无法结合成本做决策。
9.4.1 基线优先
先写一个简单规则与 Logistic Regression。若复杂模型只提升离线 AUC,却增加 100ms 延迟、无法解释、线上误报不降,就没有生产价值。所有新模型与当前规则、随机/多数基线比较。
9.4.2 可解释性
对调查员给具体信号:“设备首次出现、ASN 高风险、10 分钟内访问 12 个敏感资源”,而不是只给 SHAP 图。解释必须基于当次真实输入和模型版本,不能由 LLM事后编原因。
9.5 Transformer 与 LLM 必知概念
Token 是模型处理单位;embedding 是语义向量;attention 让序列位置相互聚合;上下文窗口限制一次可见信息;推理是按概率生成后续 token。
LLM 没有天然事实数据库,也不自动知道组织权限。幻觉、上下文污染、训练知识过期、非确定性和成本延迟都要工程化处理。
9.5.1 Prompt 不是安全策略
System prompt 可以指导模型行为,但外部内容会竞争上下文,模型输出也非确定。任何“不得访问其他租户”“金额不得超过 1000”都必须在检索/工具/策略层再次确定执行。
9.5.2 结构化输出
要求 JSON Schema,设置枚举、长度和必填字段;解析失败重试有上限;业务层重新验证 ID、金额、路径和权限。合法 JSON 只说明格式正确,不说明动作安全。
9.6 RAG
图 9-1:9.6 RAG · 可编辑 Mermaid 源码
流程:文档采集与 ACL → 清洗/切分 → embedding/关键词索引 → 查询重写 → 混合检索 → ACL 过滤 → rerank → 带引用生成。
关键安全不变量:用户不能通过 LLM 检索到本来无权访问的片段;ACL 应在检索层强制,不依赖提示“请勿泄露”。索引删除和权限变化要传播。
9.6.1 Chunk 继承权限
每个 chunk 保存 document ID、tenant、ACL version、classification、source、updated_at。检索先获得调用者允许的 security filter;结果返回后再次校验当前 ACL,防索引陈旧。无法确认权限的 chunk 默认不进入上下文。
9.6.2 回答质量
引用必须能支持对应句子,不只在末尾堆链接。对无证据、冲突或过期资料明确表示不确定;可要求模型输出 answer, citations, uncertainties 结构,并由后处理验证引用 ID 属于检索集合。
9.6.3 检索评估
分别评估 Recall@K、MRR/nDCG、ACL violation rate、答案事实性和引用正确率。端到端答案差可能是检索、重排或生成问题,要分层定位。
9.7 Tool Calling 与结构化输出
模型输出必须按 JSON Schema 验证;工具参数做业务校验、授权和限额。模型选择调用 disable_user 不等于有权调用;工具层重新检查主体、委托、资源和审批。
工具返回是不可信数据,可能含提示注入。给模型时标明来源与不可信边界,不把工具输出拼进高优先级指令。
9.7.1 工具包装器
text
model proposal
→ schema validation
→ subject/delegation authorization
→ business invariant validation
→ risk/approval
→ idempotent execution
→ sanitized result + audit模型无权绕过任一步。工具名和描述也属于供应链配置,需要版本、评审和最小暴露。
9.8 Evals
评估集来自真实任务、历史事故、边界用例和对抗样本。分为:
- 任务质量:正确率、完整性、引用准确率;
- 安全:越权召回、提示注入成功、敏感数据泄漏;
- Agent:工具选择、参数、完成率、步骤、审批触发;
- 运行:延迟、token/调用成本、超时、fallback;
- 人效:调查时间、采纳率、纠错率。
模型评分器可扩展规模,但对关键样本需人工黄金答案和盲审。每次模型、prompt、工具、索引或策略变更都跑回归。
9.8.1 数据集分层
- Golden:少量人工高质量核心案例,发布门禁;
- Regression:历史 bug/事故,一旦修复永不回归;
- Adversarial:提示注入、越权、歧义和边界;
- Live shadow:真实脱敏分布,监控漂移;
- Slice:语言、租户、设备、攻击类型、文档权限分群。
定义失败严重度。一次跨租户泄漏即使总体成功率 99.99% 也不能发布。
9.9 AI 身份风险检测项目
图 9-2:9.9 AI 身份风险检测项目 · 可编辑 Mermaid 源码
上线分级:仅分析 → 提示调查员 → 用户 step-up → 限制高危动作 → 自动阻断。每一级设准入指标和回滚阈值。
9.9.1 模型注册与发布
保存训练数据窗口、特征版本、代码 commit、超参数、离线指标、审批和制品哈希。线上请求记录 model version 与 reason features。新模型先 shadow 对比旧模型,再 canary;漂移或误报超过阈值自动退回。
9.10 权限图谱与角色挖掘
节点:人、组、角色、应用、资源、服务账号;边:成员、拥有、管理、可承担、访问。图算法找高中心性身份、最短提权路径、异常社区和毒性组合。
角色挖掘生成候选而非直接授予。结合岗位、实际使用、owner 反馈和 SoD 验证;LLM 可将证据生成自然语言说明,但不能捏造业务理由。
9.11 身份运营 Copilot
典型只读工具:查主体状态、登录时间线、权限来源、策略解释、历史工单。写工具默认关闭;开放时逐动作审批并限制资源。
回答格式建议:结论、置信度、证据引用、缺失信息、建议下一步。明确区分事实、规则推断和模型推断。
9.12 隐私、公平与治理
身份风控会处理行为与设备数据。执行目的限定、最小采集、留存、访问控制、去标识化、影响评估和申诉。检查不同地区/设备/用户群的误报差异,避免历史标签把弱势群体系统性判高风险。
建立 Model Card:用途/禁用用途、数据、指标、限制、owner、版本、上线日期;建立事件响应:模型失效、提示注入、数据泄漏、供应商异常。
9.12.1 供应商模型
核对输入/输出是否用于训练、保留多久、区域、加密、管理员访问、删除、日志、事件通知和退出导出。对敏感身份数据先最小化/代号化;合同承诺不能替代应用侧访问控制。
9.12.2 人工复核反馈
分析员“接受建议”不一定等于模型正确,可能是时间压力。抽样二次复核、记录纠错原因,避免反馈环把模型偏差自我强化。
9.13 本章实验与验收
实验:合成 30 天登录事件;规则与 GBDT 比较;按时间测试并校准;建 RAG 调查助手,验证跨租户文档永不召回;建立 30 个安全回归样本。
验收:解释为何更大模型不一定更安全;RAG 为何不能消除幻觉;模型 99.9% accuracy 仍可能不能用;如何证明 ACL-aware retrieval。
9.13.1 实验交付物
数据字典、时间切分脚本、基线与模型对比、校准图、阈值成本表、分群指标、模型卡、shadow 报告、回滚条件;RAG 另交 ACL 不变量测试、检索指标、引用验证和 20 个对抗样本。
工程复盘:99.9% 准确率怎样输给一张混淆矩阵
小安的第一个模型汇报写着“accuracy 99.9%”。安全运营同事只问:昨天那批真实接管抓到了几个?答案是零。模型把所有请求判为正常,在极不平衡的数据上拿到了漂亮但无意义的数字。
团队重新从处置目标设计评估:以时间切分避免未来信息泄漏;按攻击类型、用户群和设备群分层;同时观察 precision、recall、PR-AUC、校准和固定告警预算下的命中;把人工调查结果回流,但隔离处置造成的选择偏差。
第二个教训来自 RAG。检索质量很好,却把用户无权查看的段落送进模型。修复时,ACL 过滤被放在检索和重排链路的强制边界,而不是写进 Prompt;输出引用必须可追溯到授权后的证据。
小安最终交付的是数据卡、时间切分评估集、基线规则、模型比较、阈值—动作映射、影子运行报告和回滚条件。AI 的意义不是替换一个规则,而是以可测量方式帮助团队更早发现、更准判断或更快处置。
面试与设计评审
- 为什么看 PR-AUC 而非 accuracy?说明低基率、precision/recall 和每千用户误报。
- RAG 如何防跨租户泄漏?权限在检索前强制,索引同步,断言未授权文档不进入上下文。
- LLM 能否自动封禁账号?先做规则/模型建议、影子、step-up 和人工监督,再按证据逐级开放。
本章小结
AI 的先进性不在模型名称,而在数据质量、评估集、权限边界、上线阶梯和反馈闭环。身份场景里,稳定规则与传统 ML 常负责实时判断,LLM 更适合证据汇总和交互。