很多团队上 AI 时只问「好不好用」,出事之后才发现不知道风险从哪来。这篇不讲空泛概念,而是把 AI 链路拆成数据层、模型层、应用层、账号与账单层,逐层列出风险长什么样、什么情况下不适用、该去哪里核对,最后给一份按顺序走的排查清单。
很多团队上 AI 时只问「好不好用」,出事之后才发现不知道风险从哪来。安全事故很少是单点爆炸,往往是数据随手一贴、权限给得太宽、Key 放在群里这几件事叠在一起。这篇不讲空泛概念,而是把 AI 链路拆成数据层、模型层、应用层、账号与账单层,再补上内容合规和供应链两段,逐层说清风险长什么样、什么情况下不适用、该去哪里核对。
你可以把它当成一份逐条可查的盘点框架:先确定每一层归谁管、要查什么,再按最后的顺序清单走一遍。不需要一次性全做完,但要知道自己现在停在哪一层。
为什么按「层」看风险,比按「类型」看更有用
按「泄露、幻觉、越权」这类词分类,听起来清楚,用起来容易漏项。因为同一个事故往往横跨好几层:模型顺着网页里的指令去读了内部文件,这里面既有应用层的注入,也有模型层的越权,还有数据层的暴露。从任意一个单点去查,都会只堵住一角。
按数据进、模型算、应用出、账号兜底这个顺序分层,好处是每一层都能落到一个明确的负责人和一个可执行的检查动作。谁签字谁负责,比「大家一起注意安全」有用得多。
- 数据层
- 数据从哪进、经过哪些节点、最后留在哪,归安全或法务主责。
- 模型层
- 模型会不会编、能不能被诱导、行为是否稳定,归算法或平台主责。
- 应用层
- 模型能碰哪些工具和系统、输出给谁看,归开发主责。
- 账号与账单层
- 谁有 Key、额度怎么变、封了影响谁,归运维或财务主责。
数据层:从提示词到日志,数据到底流出去了什么
最典型的表现是「员工随手粘贴」:合同、客户名单、未发布代码被整段丢进对话框,事后没有任何记录可查。这类行为不是态度问题,多半是没有人告诉过他们哪类数据不能进对话窗口。
第二类是嵌入式泄露,训练或微调用的语料里带个人信息,模型输出时又被复现出来。第三类是链路泄露,请求经过中转、代理、缓存、日志多个环节,任何一环留存都是暴露面。
- 先列入口:把所有能把内部数据送进模型的地方列出来,包括网页端、内部工具、脚本、客服系统。
- 再标节点:每个入口画出数据经过的环节,标注哪些是自建、哪些是第三方。
- 最后定红线:哪几类数据永远不进对话窗口,写成一句话贴在团队可见的地方。
判断标准是「这条数据离开公司网络后经过了几个可控节点」,节点越多,风险越高。如果连链路都画不清,先去站内核对一次数据流向的梳理方法,再谈限制。
| 风险表现 | 常见触发场景 | 可以先做的事 |
|---|---|---|
| 随手粘贴 | 员工把合同、客户名单贴进对话框 | 列出禁入数据类目并公开 |
| 语料泄露 | 用带个人信息的语料训练或微调 | 源头数据先做脱敏与授权确认 |
| 链路留存 | 请求经中转、代理、缓存、日志 | 画出节点图,标记第三方环节 |
| 日志堆积 | 调试日志长期保留完整提示词 | 设定保留期限与访问权限 |
模型层:幻觉、越权与「说得像真的」三类表现
幻觉的破坏力不在答错,而在答得太像对的:编造法条、编造接口参数、编造内部制度条目,人会直接照抄。判断的关键不是它说得流不流畅,而是它给出的依据能不能被单独验证。
越权表现是模型被诱导去调用本不该调用的工具或接口,比如读文件、发请求、改数据库。第三类是版本漂移,上游静默更换权重,同一提示词的行为前后不一致,业务侧却按老结论做决策。
- 抽查依据随机抽一批模型输出,逐条核对引用的来源是否真实存在、是否被正确引用。
- 限定工具面列出模型实际能调用的工具清单,比对这个清单是不是超出业务必需范围。
- 固定行为基线准备一组固定问题定期跑一遍,观察答案是否发生明显漂移,有变化先查上游是否有调整。
应用层:提示词注入、工具调用与输出外泄
提示词注入的常见表现是「外部内容被当成指令」:网页、简历、工单里的文字被模型执行。很多团队在接第一份用户上传文档时就会撞上这个问题,而且往往是在日志里才看出来。
工具调用的风险在于权限过大,模型能删能改,出问题时无法区分是人点的还是模型点的。输出外泄则指模型把上下文里的敏感内容回显给不该看到的人,多租户场景尤其明显。
- 外部内容只当数据看,不当指令执行,需要明确区分数据区和指令区。
- 工具权限按最小可用给,删除、批量修改这类动作默认不开放。
- 所有工具调用留审计日志,写清触发来源是用户还是模型。
- 多租户场景核对上下文是否隔离,避免串号回显。
一个简单的判定方法:这个动作如果由实习生执行,你敢不敢给他同样的权限?不敢,就不要给模型。
账号与账单层:Key、额度与被封的连带损失
Key 泄露的直接表现是账单异常增长,间接表现是别人用你的额度、你的账号跑不合规内容。第二类风险是账号封禁的连带影响:关联的支付方式、绑定的团队成员、正在跑的业务接口一起停。
共享账号和多人共用一把 Key,会让事后追责几乎不可能,因为日志里全是同一个身份。这一层最容易量化,也最适合固定周期检查。
| 检查项 | 正常表现 | 异常信号 |
|---|---|---|
| 用量趋势 | 与业务量大致同步波动 | 突然抬升或深夜集中调用 |
| 调用来源 | 集中在已知的出口 IP | 出现陌生地区或陌生服务 |
| Key 管理 | 一人一 Key、定期轮换 | 多人共用、长期不换 |
| 告警设置 | 额度与频率都有阈值提醒 | 完全靠人肉查看账单 |
具体怎么看用量、怎么判断偏差是否正常,可以到站内的价格与用量核对页面看当时的数字,再决定是排查还是走处置流程。
内容与合规层:生成物本身带来的外部风险
表现包括生成内容侵犯他人著作权、肖像权、人格权,以及深度合成内容未做标识。对企业来说,风险不只在罚款,还在客户投诉、平台下架、合作方终止合同,这几项的连锁反应往往比处罚本身更麻烦。
判断标准可以简化成一句:这条内容如果被截图传播,我们能不能解释清楚来源和授权。解释不清的,就不要直接对外发。
- 对外发布前固定一次人工复核,复核人要有权否决。
- 保存生成记录与审核记录,能对应到具体时间与具体人。
- 涉及人物形象、品牌标识、第三方素材的,先确认授权状态。
- 深度合成类内容按平台要求做标识,不留口头约定。
供应链层:厂商、中转站与开源权重的信任边界
上游厂商的服务条款、数据处理条款、可用区位置,决定了你的数据实际受哪套规则约束。走中转或聚合平台时,模型是否被替换、请求是否被留存,都是需要单独验证的事项,不能默认向上游看齐。
开源权重改用第三方托管,等于把信任对象从模型换成了托管方,风险属性完全变了。原来自己部署能控的东西,托管之后可能要重新评估。
- 确认条款把上游的数据处理与留存条款逐条读一遍,标出与内部合规要求冲突的点。
- 验证中转对中转或聚合平台做一次响应一致性抽查,看返回是否符合预期模型特征。
- 确认托管边界开源权重若走第三方托管,明确托管方能看到什么、不能看到什么。
- 书面留档把以上三条的结论写成文档并确定复审周期,不要只停在口头确认。
一张按顺序走的自查清单
看过前面几层,可能觉得事情很多。实际落地时按下面这个顺序走,先做前两步通常就能覆盖大部分常见问题,后面几步可以分批推进。
- 第一步查数据列出所有把内部数据送进模型的入口,标出每个入口经过的节点,画出链路图。
- 第二步查权限模型能调用哪些工具、能读哪些表、能写哪些系统,逐项对齐最小权限并留清单。
- 第三步查身份谁的 Key、谁在用、有没有共享,额度与频率告警设了没有,核对一次用量与来源。
- 第四步查输出生成物对外发布前有没有人工复核,有没有留痕,复核人能不能真正否决。
- 第五步查外部上游条款、中转可信度、托管方式这三件事有没有书面结论,有没有定复审周期。
按这个顺序走,通常能覆盖八成以上的实际问题。剩下的两成多半出在跨层组合上,那就回到第一层重新看一遍链路,别急着加工具。
下一步如果你的入口里包含中转或聚合平台,建议先确认它们的可信度评述与价格追踪,再决定是否继续把业务数据交给它们。→常见问题
我们只是内部用,也需要按这么多层查吗?
不必全查。内部试用阶段重点看数据层和账号层:员工把什么内容发出去、Key 归谁管、额度有没有告警。等要接真实业务数据或对外输出内容时,再补应用层和合规层。先把最低那两层做实,比一次性铺开然后全部流于形式有用。
AI 幻觉算不算安全风险?
看用途。如果只是内部参考、有人复核,它更像质量问题;如果输出直接进合同、进工单、进对外答复,没人复核,那就变成安全事故,因为它会以确定的语气把错误信息传给下游。判断标准是这条输出后面有没有人工把关这一步。
提示词注入和普通用户乱问有什么区别?
乱问是用户主动输入,注入是把指令藏在模型会读到的外部内容里,比如网页、文档、简历。前者你能看到输入,后者往往是模型自己抓回来的。防护重点也不同:前者靠内容审核,后者靠隔离外部内容和指令、限制工具权限。
走中转站的风险和直连官方有什么不同?
多了一个信任节点。直连时你要评估的是厂商条款;中转时还要判断请求有没有被留存、模型有没有被替换。后者不容易从条款看出来,得靠实测和对比。可以先看站内中转站目录里的可信度信息,再做自己的验证。
这些风险里,哪一项最容易被忽略?
账号与账单层。因为它不出现在任何技术评审里,通常只有财务在对账时才发现。建议把用量异常告警当成基础设施来做,而不是等账单出来才回头看,具体阈值按自己业务量级定。