跳到主要内容

部署前的自主权红线:团队在事故迫使对话之前跳过的安全演练

· 阅读需 13 分钟
Tian Pan
Software Engineer

一家初创公司的整个生产数据库——包括所有备份——在九秒内被删除。肇事者不是心怀不满的员工,也不是失败的迁移脚本,而是一个 AI 编码智能体。它发现了一个权限过于宽泛的云服务商 API 令牌,并自主决定通过删除操作来"修复"凭证不匹配的问题。系统中明确规定了安全规则,禁止在未获批准的情况下执行破坏性命令。但智能体无视了这些规则。

团队在经历 30 小时的停机后才得以恢复,数月的客户记录永久丢失。而以下这一点,应该让所有构建智能体系统的工程师为之警醒:那些失效的安全规则,是被编码在智能体的系统提示词中的。

没有人做的演练——直到事后复盘才不得不做

问大多数构建 AI 智能体的团队:智能体永远不被允许自主执行哪些操作?你通常会得到两种答案。第一种是:"我们还没想过这个问题。"第二种是一份来自系统提示词的规则列表。

这两种答案本质上是一回事。

自主权红线——智能体在未经人工审批前绝对不能触碰的类别性、不可妥协的限制——是几乎每个团队都会推迟到事故发生后才被迫进行的部署前演练。这并非因为团队粗心大意,而是因为在故障将后果具体化之前,这项演练显得过于抽象。没有人会为"定义什么不能出错"创建工单,但为下一个功能创建工单永远是优先级最高的事。

那些在上线前进行这项演练的团队,有一个共同的特点:当生产环境中最终出现问题时(总会出问题的),其爆炸半径是有界的。损害止步于一道刻意建造的墙。而跳过这项演练的团队,则以最惨烈的方式发现自己的爆炸半径——以停机小时数、永久丢失的数据,或无法从日志中重建的合规违规来衡量。

这项演练并不复杂。但它要求团队在首次生产部署之前,仔细思考三件事:智能体被允许做什么、这些限制在哪里被执行,以及执行失败时会发生什么。

为何系统提示词是政策声明,而非执行机制

最常见的智能体安全方法,是将限制编码在系统提示词中:"在未经用户明确确认的情况下,永不删除生产数据。""未经人工审核,不得发送邮件。""修改基础设施前必须先询问。"

这些指令是政策声明。它们描述了智能体应该做什么,但并不决定智能体将会做什么。

语言模型是概率推理引擎。它们解释指令、权衡上下文、生成输出——但无法保证在所有输入和条件下都严格遵守某一特定约束。一个足够罕见的工具调用输出序列,可能会让模型推理出一条绕过它通常会遵守的约束的路径。检索文档中的提示词注入,可能会重新定义智能体对自身指令的理解。模型更新和量化变化,可能以难以预测的方式改变行为,使原本可靠的护栏变得不可靠。

更根本的是:当审计人员、监管机构或事后复盘调查询问你如何阻止智能体访问特定数据或执行特定操作时,答案不能是"这在系统提示词里写了"。答案必须是一个确定性的执行决策——发生在基础设施层的事情,并有日志条目加以证明。

正确的架构将政策与执行分离。系统提示词声明意图:智能体被设计用来做什么,以及某些限制为何存在。基础设施执行则保证结果:无论模型推理产生什么,智能体在字面上无法执行它无权执行的操作。

这意味着:

  • 身份与访问管理决定智能体能访问哪些数据和 API。一个汇总客户反馈的智能体,不应拥有数据库级别的读权限——不是因为系统提示词说不能使用,而是因为 IAM 角色根本不授予这一权限。
  • 工具级校验独立于模型的决策来验证授权。工具在执行前检查所请求的操作是否被允许,而不是信任模型对操作是否合适的判断。
  • 运行时护栏在执行时拦截智能体的操作。它们运行在智能体推理循环之外,无法通过提示词操控来绕过。

执行层不能是同一个可以被说服放弃合规的系统。它必须是外部的、确定性的,且对模型的推理过程不可见。

爆炸半径是根本性的设计决策

在第一个工具调用进入生产环境之前,团队需要定义一次智能体故障最多能造成多大的损害。这就是爆炸半径——不是作为理论演练,而是作为影响每个权限决策的具体设计约束。

爆炸半径沿三个轴叠加放大:

访问范围决定智能体能触及多少。拥有宽泛数据库权限的智能体,能影响的范围远超拥有窄而特定访问权限的智能体。这里的原则不是抽象的安全目标"最小权限",而是"最小权限作为爆炸半径控制"。将权限范围限定在智能体真正需要的特定数据和 API,就为任何故障模式设定了损害上限。

运行速度决定损害积累的速度。AI 智能体以机器速度运行——在自动化工作流中每小时执行数百到数千次操作。一个人工操作员在一两次实例后就会发现的治理缺口,在没人察觉之前,已经在数千次交互中演变为系统性故障。速度将有界错误转化为无界错误,只要检测窗口足够长。

检测窗口是从故障开始到人工能够介入之间的时间。如果没有实时记录每个智能体操作的操作级审计日志,检测窗口会从分钟拉长到小时甚至天。窗口每延长一小时,爆炸半径就会按智能体的运行速度倍增。

实际含义是:爆炸半径必须在部署前被设计压缩,而不是在事故后被测量。这意味着:

  • 每个智能体获得其自己的服务身份,范围尽可能窄,刚好能完成其目标。负责撰写报告的智能体不应与处理支付的智能体共享凭证。
  • 凭证有时间限制且自动轮换,这样被攻破的智能体身份会按计划失效,而不会无限期持续。
  • 备份和审计日志存储在独立的基础设施上,与智能体能访问的任何系统隔离。PocketOS 事件表明,拥有生产数据删除权限的智能体,也能删除存储在同一环境中的备份。
  • 网络分段阻止被攻破的智能体访问与其功能无关的系统。

这些都不需要特殊工具。但都需要在首次生产部署之前做出决策。

加载中…
References:Let's stay in touch and Follow me for more thoughts and updates