很多团队一听到「AI 安全」就先想到买工具、上审计,但真出事时往往卡在不知道先查哪一步。这篇不铺概念,按技术方向分成几块:输入侧、输出侧、密钥与权限、日志与数据边界、供应链与中转,每块给判断标准和可照着做的动作,并说清哪些做法在什么情况下不成立。
很多团队一听到「AI 安全」就先想到买工具、上审计,但真出事时往往卡在不知道先查哪一步。见过一个五人小团队,Key 泄露后被刷了两天,第一反应是查模型有没有被越狱,其实真正的问题在资产侧。所以这篇不铺概念,按技术方向分成几块:输入侧、输出侧、密钥与权限、日志与数据边界、供应链与中转。
每块都会给判断标准和能照着做的动作,并说清哪些做法在什么情况下不成立。如果你的环境是纯离线内网实验,很多条目可以直接砍掉;但如果接了外部用户输入、接了第三方模型、或者输出会落到生产库,那就一条都别省。先明确你这次要防的到底是「钱被刷」「数据被带出」还是「输出不可信」,方向不同,手段完全不一样。
先把「AI 安全」拆成能干的活
安全需求按面向拆,比按技术名词拆好用得多。输入侧关心的是用户可控内容进模型时有没有获得不该有的指挥权;输出侧关心模型说的话能不能被信任使用;资产侧管 Key、账号、额度;数据侧管进出边界与留存;供应链侧管模型来源、中转与依赖。每一类对应的失败表现不同,别拿同一套手段硬套。
| 面向 | 典型失败表现 | 先看哪里 |
|---|---|---|
| 输入侧 | 外部文本让模型执行了不该执行的动作 | 工具调用路径、指令与数据是否分离 |
| 输出侧 | 错误内容直接落库或发给客户 | 落库前的非模型校验环节 |
| 资产侧 | 额度被刷、Key 被滥用 | Key 的用途、范围、上限与负责人 |
| 数据侧 | 原文出现在日志或缓存里 | 一条真实请求的完整落点清单 |
| 供应链侧 | 关键链路依赖单一不确定来源 | 是否有可切换的备份通路 |
判断标准很简单:如果一个安全措施说不清它挡住哪种失败,那它多半只是心理安慰。不适用场景也要讲清楚,纯离线、无外网、无用户输入的内网实验环境,可以砍掉大半条目,把精力留给真正有外部暴露面的部分。
输入侧:用户可控内容怎么处理
输入侧的技术方向包括指令与数据分离、结构化输入、白名单工具调用、上下文清理与长度约束,核心是别让外部文本获得「指挥权」。实战里最常见的坑,是把用户原文直接拼进会触发工具调用的提示里,模型分不清哪句是指令哪句是数据。
- 把系统指令与用户内容分开物理上放在不同字段,并显式标注边界,别用同一个字符串拼起来
- 工具调用走参数校验不要让模型自由拼字符串去执行,工具参数要有类型、范围、白名单校验
- 限制上下文内容与长度外部抓来的内容先进清理流程,再去拼接;清理规则要能验证,不能只是删几个关键词
- 验证方式构造几条带指令的外部文本,看工具调用是否真的被拦住,拦不住就说明这层没生效
输出侧:模型说的话到底能不能信
输出要过三类关:格式校验看能不能解析,内容校验看有没有越界内容,事实校验看有没有依据来源。技术方向包括结构化输出约束、引用回链、二次校验模型、规则与正则兜底、人工抽检。关键在于把模型的输出当成「待审草稿」,而不是当成结论。
- 结构化输出约束:让模型按固定结构返回,解析失败就丢弃重试,别硬猜
- 引用回链:要求关键结论带上来源位置,便于人工和程序双向核对
- 二次校验:用规则或另一个模型做交叉检查,但别把校验也交给同一个模型
- 正则与规则兜底:对确定性的字段(编号、格式、枚举值)用规则卡,成本低且稳定
- 人工抽检:按比例抽查高风险输出,抽检记录本身也是证据
判断标准:凡是要直接落库、直接发给客户、直接触发交易的输出,都必须有非模型的校验环节。不适用场景:内部草稿、辅助检索这类低风险场景,可以只做格式校验,把成本省下来。
密钥与权限:把「能做什么」收窄
这一块的技术方向是最小权限、按用途拆 Key、按环境隔离、轮换与失效机制、用量上限与告警。听起来基础,但出事最多的就是这里。判断一个团队管没管住,看它能不能拿出一张四列齐全的表。
- 用途
- 这个 Key 具体服务于哪个功能,一句话说清
- 可访问范围
- 能调用哪些能力、访问哪些数据,越窄越好
- 负责人
- 出问题时第一个该找谁、谁能停用它
- 上次轮换时间
- 用来判断轮换节奏有没有真的在执行
判断标准:一个 Key 被多个服务、多个环境共用,或者没有用量上限,就属于没管住。不适用场景:个人本地调试可以简化,但别把调试 Key 带进生产代码或提交到仓库,这一步没有例外。
数据边界:东西到底发到哪了
数据边界的技术方向包括进出链路的资产盘点、字段级脱敏、日志与缓存留存的清理、第三方回传路径确认。光看架构图没用,得拿一条真实请求实际追一遍。
- 选一条真实请求用带典型字段的真实样例,不要用构造的干净数据
- 逐站追踪落点从用户输入一路追到模型服务商、日志系统、缓存、监控,看每一站落没落原文
- 标注字段级差异哪些字段必须原文、哪些可以脱敏、哪些根本不需要传,逐字段标出来
- 确认回传路径第三方有没有回传、回传到哪、留存多久,能问清就问清
判断标准:说不清某类字段在哪一站被记录,就等于没有边界;脱敏能降低但不能消除风险。不适用场景:数据本身已公开或不可回溯到个人的场景,可以减少脱敏层级。各家服务商的数据处理口径会变,具体条款到站内的资料库页面核对当时的版本,别照搬旧印象。
供应链与中转:别只信一个名字
供应链侧的技术方向包括来源核实、链路加密确认、能力与宣传是否一致、异常波动监测。中转和第三方通道尤其要小心,因为名字和实际能力之间经常有落差。
| 检查项 | 怎么验证 | 不通过怎么办 |
|---|---|---|
| 来源主体 | 能否说清运营方与责任归属 | 关键链路不接入,或降级为非关键用途 |
| 链路加密 | 请求与响应是否全程加密传输 | 不接受明文链路承载敏感内容 |
| 能力一致性 | 多时段、多路径做同请求对照 | 结果不一致就只当参考,不进关键链路 |
| 波动监测 | 用量与响应异常是否有告警 | 没有监测就补上,再谈接入 |
判断标准:关键业务不该把唯一通路压在一个说不清运营主体的中转上,至少留一条可切换的备份。想比较不同通道的实际表现,可以到站内的检测页面跑一遍再决定,具体结果以你实测时为准。不适用场景:非关键、可重试、结果只是参考的用途,容忍度可以高一些。
日志、告警与出事后的处置框架
技术方向包括日志脱敏与留存策略、异常用量告警、处置剧本、证据留存。这一块最容易被忽略,因为平时看不出问题,出事时才发现在手忙脚乱。
- 日志脱敏:写入前就该脱敏,别指望事后清理
- 留存策略:留多久、谁能查、过期怎么删,写成明文规则
- 异常告警:用量、失败率、异常调用模式都要有阈值,且要有人收
- 证据留存:处置过程中的操作记录同样是证据,按时间顺序留好
- 处置剧本:谁先做、按什么顺序,提前写成一张纸贴在显眼处
处置顺序建议是:先止损(堵住入口、停用凭据),再确认范围,再补证据,再对外沟通。判断标准:如果告警只在账单出问题后才响,那属于事后统计不是监控。不适用场景:小团队人手有限时可以只留一条关键告警,但要把处置顺序写下来,别只存在脑子里。
把上面这些排进你的排期
最后落到执行。先用一次自查把五类风险各打一个「有/无」标签,缺的那类优先补,别按技术时髦度排。第二步给每条措施配一个可验证的验收动作,比如「新 Key 只有单一用途」「输出落库前有一条非模型校验」。第三步定节奏:一次性的盘点、定期轮换、持续监控分开安排,混在一起做不完。
| 节奏 | 包含动作 | 验收口径 |
|---|---|---|
| 一次性盘点 | 资产、边界、供应链清点 | 能拿出一张写满的清单 |
| 定期执行 | Key 轮换、抽检、权限复核 | 有执行记录,不是口头说做了 |
| 持续运行 | 告警、日志、异常监测 | 被真实触发过至少一次 |
判断标准:三个月内没有任何一项被实际触发或复核,说明要么措施无效,要么根本没在跑。另外提醒一句,涉及具体服务商的能力和条款,别用一两年前的记忆做决策,到站内资料库和检测页面核对当时的数字和结论,再定要不要调整。
下一步先把你的 Key 清单和数据落点清单拉出来,再对照站内的中转与工具检测结果做一轮交叉验证,比空想威胁模型有用。→常见问题
AI 安全是不是就是防提示词注入?
不是。提示词注入只是输入侧的一类问题,AI 安全还包括密钥与权限、数据边界、输出可信度和供应链几个方向。很多团队出事其实出在 Key 共用、日志落了原文或权限过宽上,跟注入没关系。先按你实际会踩的坑排序,不要只盯一个方向。
小团队没安全岗,最少要做哪几件?
最少三件:一是每个 Key 单一用途且有额度告警;二是输出直接落库或发给客户前有一条非模型的校验;三是有一套写得出来的处置顺序。这三件覆盖了最常见的钱、数据、输出三类损失,剩下的等有人力再补,别一上来铺全套流程。
脱敏之后是不是就可以放心把数据发出去?
不能这么理解。脱敏降低的是可识别性,但字段组合、时间戳、业务上下文仍可能反向定位到具体的人或订单。更稳的做法是先确认这条链路里哪一站会留存原文,能不发就不发,必须发时把范围和留存期一起收窄,而不是指望脱敏一步到位。
怎么验证措施到底有没有生效?
别看文档看行为。随机抽一条真实请求走一遍链路,看校验环节是否真的拦得住、日志里有没有残留原文、异常用量是否触发告警。测不出任何拦截的防护,等于没装。定期做,而不是上线前做一次。