AI 安全策略例外治理:到期租约、补偿控制与复核水位
永久 allowlist 会把临时业务需求变成不可见后门。本文将策略例外建模为有界租约,绑定精确范围、补偿控制和使用回执,并让到期、撤销与续期重新评估真正生效。
本文要点
- 主题聚焦:AI、大模型、DevOps
- 适合人群:独立开发者、全栈工程师、AI 应用开发者
- 核心价值:快速理解背景、实践路径、常见误区和工程建议
“先给这个客户加白名单,下周再处理”往往会存活数年。模型、数据分类和负责人已经变化,布尔字段仍让所有请求绕过新规则。NIST SP 800-37 将风险管理放在持续生命周期中,SP 800-53 也强调控制评估与持续监测;AI 平台需要把例外做成会自然失效的安全对象,而不是散落在代码和工单里的备注。
Agent 人工审批门授权一次具体动作,Agent 审批防重放限制该批准的消费次数。策略例外不同:它允许一类请求在限定时间内偏离基线控制,可能被使用许多次,因此必须独立管理范围、风险和撤销。
例外是一份闭合租约
safetyExceptionLease.v1 至少记录 exception ID、lineageKey = H(control, scopeDigest)、head generation、被偏离的 control/policy、规范化 scope、风险说明、owner/approver、补偿控制探针、开始与硬到期、最大用量、授权纪元、policy floor、前驱和签名。scope 列出 tenant、环境、用例、模型、action、数据类别、地区和资源;空值不是通配。
schema: safetyExceptionLease.v1
exceptionId: exc_01JZ9A
control: output.pii.block@6
scope:
tenant: tenant-42
environment: production
useCase: regulated-document-redaction
models: [model-release-81]
dataClasses: [synthetic-pii-fixture]
compensatingControls:
- { id: isolated-sandbox@3, freshnessSlo: 60s }
- { id: no-external-egress@2, freshnessSlo: 30s }
startsAt: 2026-07-19T00:00:00Z
expiresAt: 2026-07-26T00:00:00Z
maxUsages: 500
issuanceEpoch: 918
policyFloor: safety-policy@44
某些底线标为 NON_WAIVABLE,例如跨租户数据暴露,例外服务对它们根本不签发 lease。补偿控制不是文案:每个控制提供带时间水位的机器探针;探针过期、状态未知或低于所需版本时,租约不适用。风险接受者不能同时充当唯一技术验证者,高风险范围还应要求组织定义的双人角色分离。
到期和撤销必须走进执行路径
状态机为 DRAFT -> REVIEWED -> SCHEDULED -> ACTIVE -> EXPIRING -> EXPIRED,任意活跃状态可进入 REVOKED。时间判断使用服务端可信时钟;时钟不可用、revocation watermark 落后或例外服务不可达时,回到基线策略,而不是继续用本地缓存。到期没有自动 grace period。提前 30、14、7 天的通知只负责推动迁移,不延长 expiresAt。
运行时先计算基线策略,再按 scope 查租约,校验签名、状态、policy floor、owner、补偿探针和配额。接受点原子预留 usage、绑定 execution,并要求 lease generation 等于 lineage 的 active head,再把 exception ID 写入AI 运行时安全判定回执;任一失败都不执行。失败按同一 execution 结算,不能另取额度。
撤销提升 exception epoch,并要求所有 reader 在 SLO 内观察新 watermark;缓存只可缩短可用窗口,不能越过硬到期。策略升级若触及租约 control 或 scope 语义,提升 policy floor 使旧租约失效。RAG 授权撤销传播处理成员与文档权限收紧,例外系统复用其“未知即不授权”原则,但不接管业务 ACL。
续期创建后继,不修改历史
复核覆盖使用、探针缺口、事故、替代方案、剩余风险和 policy diff。registry 对 canonical lineage 保持唯一 current head:初始 lease 只可在无 head 时 CAS 创建,续期 CAS head 到唯一 SCHEDULED successor,默认 startsAt = 旧 expiresAt;若提前切换,必须原子撤销旧代并激活新代。相同 scope 另开 predecessor=null 根会冲突,重试返回既有结果;历史 lease 不改写。
量化门可规定:无 owner、无 approver 或无健康补偿控制的活跃租约为 0;过期或撤销 lease 产生的 accepted execution 为 0;严重风险租约最长 7 天、其他租约最长 30 天;撤销传播 p99 小于 60 秒;100% 例外执行具有 usage receipt;续期中 100% 引用完整观察窗口,且范围扩大必须重新审批。期限由组织按风险冻结,不把告警关闭当成合格。
故障注入覆盖时钟回拨、两个请求绕过前驱新建根、重复续期、scope Unicode 混淆、owner 离职、探针假绿、最后一个 usage 与 successor 激活竞争、policy floor 提升和空数组当通配。预期回到基线或 EXCEPTION_NOT_APPLICABLE,不能 fail-open。AI 云控制面审计完整性记录变更,业务断言仍直接验证动作未执行。
迁移先盘点代码 allowlist、数据库 flag 和运维手册,将其编译为默认禁用的候选 lease;shadow evaluator 对至少一个完整业务周期报告“旧路径放行而新租约拒绝”的原因。随后只选一个低风险 use case 启用,再逐租户扩大。异常时 reader 回到上一版解析器,但继续服从当前 epoch、硬到期和 policy floor;绝不能回滚数据库快照来复活已撤销租约。AI 功能灰度与 Feature Flag可以关闭新例外入口,历史 usage 与风险接受记录仍保持不可变。
Related