AI 基础设施知识花园

AI 应用的安全审计:内容过滤只是最后一环

很多人理解的 AI 安全,就是模型输出后做一次内容过滤。这是最后一环,不是全部。完整的安全审计要覆盖请求内容、模型路由、身份权限、响应、计费和人工复核——过滤只是其中离用户最近的一道。

审计是一条事件链

一次调用的审计,应该把这些串成可关联的事件链:调用身份、路由账号、模型、请求类型、延迟阶段、token 分类、费用。这样出问题时才能区分:是用户请求写错了,是上游故障,是调度问题,还是计费问题。只看过滤结果,等于只看终点线的照片。

提示词审计本身可以包含同步阻断、异步队列、事件、指标、管理端复核和筛选删除,但必须纳入既有的权限域——不能因为新增一个审计页面,就隐式扩大了 RBAC 的范围。

提示词快照是高敏证据

完整提示词或响应快照属于高敏审计证据:限制谁能访问、保留多久、提供删除入口。普通业务日志不应默认保存全部正文。需要排障,不能成为长期保存完整提示词的理由。

异常不等于命中:fail-open 与 fail-closed 的取舍

安全审核服务自己出故障,和"内容命中违规"是两种完全不同的状态,绝不能混为一谈。我们的多模型网关为此做了明确的策略选择:

基础设施故障不记为用户违规。这条写进了协议边界:不同入口用各自的错误格式,但原因字段保留统一错误码,审计日志的处置字段记录真实动作(异常拦截记拦截、异常放行记放行),error 字段继续保留服务故障本身。

一个真实的去重教训

异常记录的去重也出过真问题:客户端收到 503 后约每 14 秒重试一次,而原有阻断去重 TTL 只有 10 秒,导致每次重试都重新调用故障的审核服务并重复落库。修复方案是独立的 1 分钟异常冷却,覆盖用户 Key、分组、端点和协议——冷却期内请求仍返回 503,但不再重复调用审核服务;并发首次失败用原子登记保证只写一条记录。

连"故障时少打点日志"这种细节都有明确规则:普通命中沿用原来的短 TTL,不被延长;异常绝不能写入命中的缓存,否则管理员修好配置后还会被旧的 503 继续拦截。

健康检查证明不了安全

生产健康检查只能证明服务可用。安全和计费的结论,仍然需要真实请求、权限边界和端到端日志来验证。一次 200 的健康检查,证明不了任何一条审计链路是通的。

小结

AI 应用的安全审计只有一句话:从请求进来到响应出去,每个关键事件都可追踪、可复核;敏感内容少存、短期存;服务故障永远不要伪装成用户违规。内容过滤是最后一环,不是第一环,更不是唯一一环。

© 2026 rotor®GitHub 开源CC BY-NC-ND · 转载请注明出处