把安全控制从“感觉更严了”变成样本、指标、发布闸门、线上回放和持续回归
| 只看什么 | 会漏掉什么 | 正确做法 | 证据字段 |
|---|---|---|---|
| 只看拒答率 | 模型可能把正常请求也拒掉,业务可用性下降 | 同时看误拒率、任务成功率和用户申诉 | refusal_rate、false_reject_rate、appeal_result |
| 只看红队攻击成功率 | 真实业务灰区、权限边界和工具副作用没有覆盖 | 把红队、正常对照、灰区、工具风险和线上坏例分层 | suite_type、risk_label、tool_side_effect |
| 只做上线前测试 | 模型、Prompt、RAG、工具和策略改动会让旧风险复发 | 把安全样本纳入每次变更回归和发布闸门 | release_gate_id、suite_version、regression_result |
| 只看总分 | L1-L4 风险等级差异被平均掉,高风险小样本被淹没 | 按风险等级、业务域、用户角色、工具类型切片 | risk_tier、domain、role、slice_score |
| 只看模型回答 | 工具是否越权、是否误执行、是否泄露上下文看不见 | 同时评测输入、上下文、工具参数、输出、审计链 | context_source、tool_args、audit_pack_id |
| 样本集 | 用途 | 例子 | 通过条件 | 常见错误 |
|---|---|---|---|---|
| 明确违规集 | 验证系统能拒绝或安全改写底线风险 | 危险操作、隐私窃取、越权读取、恶意代码 | 误放率低于红线,拒绝理由可解释 | 只写极端样本,忽略真实绕法 |
| 正常对照集 | 验证安全策略没有误伤正常业务 | 安全教育、合规咨询、防护配置、合法调试 | 误拒率在阈值内,任务成功率不退化 | 安全集越严,正常集越少 |
| 灰区边界集 | 验证追问、降级、转人工和有限回答 | 意图不明、上下文缺失、医疗法律财务泛建议 | 合理追问或升级,不直接放行高风险动作 | 把灰区粗暴归成允许或拒绝 |
| 提示注入集 | 验证上下文可信度和指令层级 | 文档内注入、网页注入、多轮诱导、角色扮演 | 不执行低可信指令,不泄露系统上下文 | 只测单轮 jailbreak,不测 RAG 文档注入 |
| 工具风险集 | 验证工具调用、参数、审批和副作用控制 | 发邮件、删数据、改权限、下单付款、代码执行 | 高风险动作必须确认、限权、可回滚 | 只看 tool_call 是否生成,不看执行安全 |
| 线上坏例回归集 | 防止已修问题复发 | 事故样本、用户申诉、误拒误放、发布回归 | 旧问题不复现,修复证据可追溯 | 坏例只进复盘,不进自动回归 |
| 真实请求 | 系统行为 | 结果 | 风险 | 处理动作 |
|---|---|---|---|---|
| 危险 / 违规 | 拒绝、降级或转人工 | 正确拒绝 | 体验可解释性 | 给出安全替代、记录 policy_id |
| 危险 / 违规 | 回答或执行 | 误放 false allow | 安全事故、合规责任、工具副作用 | 阻断发布、升级事故、加入红队回归 |
| 正常 / 合法 | 回答或执行 | 正确放行 | 仍需监控质量和权限 | 记录成功样本,维护正常对照集 |
| 正常 / 合法 | 拒绝或过度降级 | 误拒 false reject | 可用性下降、用户流失、业务阻塞 | 调策略阈值、增加灰区追问、加入误拒集 |
| 灰区 / 不确定 | 追问、限域回答、转人工 | 正确升级 | SLA 和成本压力 | 标注 handoff_reason,优化判定规则 |
误放是底线风险,误拒是产品风险。L4 场景可以更保守,L1 / L2 场景如果误拒过高,会让安全策略变成不可用策略。
| 红队样本字段 | 为什么需要 | 示例 |
|---|---|---|
| attack_type | 用于分桶统计,不让总分掩盖薄弱攻击面 | prompt_injection、tool_escalation、data_exfiltration |
| expected_behavior | 定义应该拒绝、追问、限域回答还是转人工 | refuse、ask_clarification、safe_completion、human_review |
| risk_tier | 不同风险等级使用不同阈值和闸门 | L1、L2、L3、L4 |
| control_layer | 定位失败应该修 Prompt、Policy、Tool 还是 Guardrail | prompt、policy、tool_runtime、decoder、guardrail |
| source | 区分人工红队、线上坏例、合成变体和事故复盘样本 | manual_redteam、incident、user_report、synthetic_mutation |
| 变更类型 | 必须回放什么 | 阻断条件 | 放行证据 |
|---|---|---|---|
| 模型版本变更 | 红队集、正常对照集、灰区集、通用能力集 | L3 / L4 误放上升、关键正常任务明显误拒 | model_version、eval_report、risk_slice |
| Prompt / System 指令变更 | 提示注入、格式输出、拒答边界、业务关键任务 | 旧越狱复发、格式失败、误拒误放超阈值 | prompt_version、diff_reason、regression_result |
| Policy / Guardrail 变更 | 违规集、正常对照、灰区、申诉样本 | 误放突破底线或误拒超过业务阈值 | policy_version、threshold、exception_rule |
| RAG 知识源变更 | 注入样本、敏感字段、权限过滤、引用忠实度 | 跨租户泄露、低可信指令被执行、引用失真 | index_version、acl_snapshot、source_trust |
| 工具 / Workflow 变更 | 工具越权、参数污染、审批绕过、幂等补偿 | 高风险工具无确认、写操作不可回滚、审计缺失 | tool_schema_version、approval_policy、dry_run_result |
| 线上指标 | 看什么 | 异常信号 | 后续动作 |
|---|---|---|---|
| policy_decision_rate | 允许、拒绝、追问、转人工比例 | 某版本拒绝率突增或允许率异常升高 | 切版本、回放样本、检查策略阈值 |
| false_reject_signal | 申诉成功、用户改写后成功、客服反馈 | 正常任务被反复拒绝 | 加入误拒集,调整灰区追问 |
| false_allow_signal | 用户举报、审核拦截、工具异常、事故样本 | 危险输出或副作用被放行 | 事故分级、阻断发布、加入红队回归 |
| guardrail_hit_rate | 护栏命中类型和命中位置 | 某类注入命中飙升或突然归零 | 检查流量、规则、日志采样和绕过路径 |
| human_review_load | 人工队列量、通过率、超时率 | 策略过度升级或高风险流量激增 | 调分级、扩容审核、优化自动判定 |
| incident_recurrence | 旧事故模式是否复发 | fixed_version 后仍出现同类样本 | 回滚、补回归、复查根因 |
| 线上信号 | 生成样本 | 必须保留 | 闸门动作 |
|---|---|---|---|
| 误放 / 漏拦 | false_allow_case、redteam_case_id | request_id、policy_version、raw_output_hash、tool_args_hash、impact_scope | L3 / L4 误放默认阻断相关发布,必要时进入事故分流 |
| 误拒 / 过度降级 | false_reject_case、normal_control_case | user_goal、expected_safe_behavior、appeal_result、business_impact | 误拒超过阈值时暂停扩量,补正常对照集 |
| 提示注入命中 | prompt_injection_variant | context_source、untrusted_segment_id、instruction_hierarchy、guardrail_decision | RAG / 文件 / 网页接入变更必须回放该类样本 |
| 工具越权或副作用异常 | tool_escalation_case | tool_schema_version、permission_decision、approval_id、side_effect_status | 工具或 Workflow 变更不过该集不得上线 |
| 事故样本 | incident_regression_case | incident_id、evidence_pack_id、root_cause_layer、fixed_version | 修复版必须通过原事故样本和扩展变体 |
红队不是一次性演练,而是线上误放、误拒、注入、工具越权和事故样本不断沉淀的测试资产。每个高价值安全信号都应该能回到 suite_version,并在下一次 release_gate_id 里产生放行或阻断证据。
| 字段 | 内容 | 为什么重要 |
|---|---|---|
| change_id / release_gate_id | 这次变更和发布闸门编号 | 把评测结果绑定到具体上线动作 |
| asset_versions | 模型、Prompt、Policy、RAG、工具、护栏版本 | 可复现同一套行为 |
| suite_versions | 红队集、正常对照集、灰区集、工具风险集版本 | 避免用变动样本解释变动结果 |
| risk_slice_result | L1-L4、业务域、用户角色、工具类型切片 | 防止平均分掩盖关键风险 |
| false_allow / false_reject | 误放、误拒、人工升级、申诉结果 | 同时约束安全底线和可用性 |
| blockers / waivers | 阻断项、豁免项、责任人和过期时间 | 让例外可见、可审计、可收回 |
| canary_plan | 灰度比例、观察指标、止血阈值、回滚条件 | 把离线安全评测接到线上验证 |
| 相邻页 | 它回答什么 | 本页接什么 |
|---|---|---|
| 风险分级 / 控制矩阵 | 任务按 L1-L4 哪一级管理 | 不同风险等级使用不同安全评测集和阻断阈值 |
| 行为控制矩阵 | 靠哪些旋钮控制行为 | 验证这些旋钮是否真的降低误放、误拒是否可接受 |
| 安全对齐 / 拒答 / 红队 | 模型安全行为怎样形成和被绕过 | 把机制样本沉淀为生产回归资产 |
| 评测到发布闸门 | 上线前如何用证据放行或阻断 | 提供安全闸门和误拒误放切片 |
| 审计证据链 | 请求、工具、发布和事故如何追责 | 记录 suite_version、policy_version、decision_reason 和 waiver |
| 事故响应 / Runbook | 安全事故如何止血和复盘 | 把事故样本回流到红队回归集 |