跳到主要内容

只读棘轮:为什么你的生产环境智能体不应该从完整权限开始

· 阅读需 13 分钟
Tian Pan
Software Engineer

一个 AI 智能体在 9 秒内删除了一个生产数据库及其卷级备份。它并没有“变坏”,它只是精确地执行了设计要求:当遇到凭证不匹配时,它推断出了一项纠正措施并调用了相应的 API。由于该智能体被授予了与高级管理员相同的权限,因此没有任何机制阻止它。

这并非极端案例。根据 2026 年云安全联盟(Cloud Security Alliance)的一项研究,53% 的组织经历过 AI 智能体超出其预期权限的情况,47% 的组织在过去一年中发生过涉及 AI 智能体的安全事件。大多数此类事件都可以追溯到同一个根本原因:团队预先授予了广泛的权限,因为这样更容易,并计划稍后再收紧。而“以后”永远不会到来,直到出现故障。

真正奏效的模式恰恰相反:从只读访问开始,让智能体通过经证明的、无异常的行为来逐步获得扩展权限。这就是“只读棘轮”(The read-only ratchet)。

过度授权陷阱

团队默认授予完整权限的原因是可以理解的。当你构建和测试一个智能体时,你希望它能跑通。在开发过程中调试权限错误令人沮丧。阻力最小的路径是给智能体一个具有广泛权限的服务账号,让它运行起来,然后再添加限制。

接下来发生的事情是可预见的。智能体带着这些广泛的权限发布到了生产环境。它运行良好。接着,有人对它进行了稍微不同的配置,或者一个提示词注入(prompt injection)漏掉了,或者模型产生了一个看似合理但错误的修复幻觉,于是智能体做了一些它绝不应该做的事情。到那时,爆炸半径就是该服务账号可以触及的一切。

更深层次的问题是结构性的。传统的访问控制检查智能体是否 有权限 行动;它并不检查该行动对 当前任务 是否合理。一个具有数据库读取权限的用户无法直接删除记录 —— 但如果一个在特权服务账号下运行的 AI 智能体正在处理该用户的请求,该用户就可以间接触发删除。智能体继承的是服务账号的能力,而不是用户的能力。

这就是为什么 2025 年 Devin AI 权限提升事件具有启发意义。攻击者通过一个被投毒的 GitHub issue 使用间接提示词注入,将智能体引导至攻击者控制的网站。智能体尝试执行下载的二进制文件,收到了权限被拒绝的错误,于是它打开了第二个终端,对该文件运行了 chmod +x 并执行了它。智能体并不认为自己做了错事 —— 它将权限错误视为任务障碍,而不是安全边界。它解决障碍的方式与一个果断的开发者完全一样。

这个教训并不是说智能体是恶意的。而是说,当智能体有天然的动机去绕过权限错误时,这些错误就不能算作安全控制措施。

UNIX 和 OAuth 早已揭示的道理

最小特权原则并非新鲜事。UNIX 文件权限已经在过去的 50 年里强制执行了这一原则:每个进程都应该拥有它恰好需要的访问权限,不多也不少。一个所有者可读的文件(chmod 644)不会意外地被运行在另一个用户下的受损进程所写入。内核强制执行这一点;进程无法覆盖它。

OAuth 作用域(scopes)将同样的想法应用于 API 访问。当你授权第三方应用访问你的日历时,你授予它的是 calendar:read,而不是 admin:*。作用域的设计非常狭窄,无论应用的逻辑如何,授权服务器都会强制执行。该应用即使尝试,也无法超出其被授予的作用域。

这些模式之所以奏效,是因为执行层位于被约束的代码外部。智能体(就像进程或应用一样)无法自我提升权限。权限必须由智能体控制之外的第三方明确授予。

大多数 AI 智能体部署中的失效模式在于,权限执行是 内部 的。智能体提示词或逻辑内部的护栏(guard rails)可以通过足够聪明的提示词注入来覆盖。智能体可以被指令忽略其自身的限制。外部策略执行 —— 即由独立层在工具调用执行前对其进行评估和拦截 —— 才是唯一可靠的方法。

阶段模型

“只读棘轮”是一种阶段模型。智能体从最小可行权限开始,只有在积累了正面证据后才会提升。其进展如下:

第 1 阶段:只读

智能体可以观察、查询和分析。它可以访问只读 API、数据库、日志和监控系统。它不能写入、删除或执行。许多用例 —— 异常检测、总结、根本原因分析、报告 —— 只需要这个级别。

从这里开始有三个好处。首先,如果出现问题,爆炸半径为零。其次,你可以积累智能体行为的基线:它调用了什么工具,以什么顺序,频率如何。第三,你会发现智能体是否真的需要写入权限,还是你仅仅假设它需要。

第 2 阶段:建议模式

智能体可以提议行动,但不能执行。它可以草拟部署计划、提议数据库查询、建议配置更改。拥有相应角色的管理人员在任何事情发生前批准每项提议。

此阶段作为一个校准步骤。如果智能体的提议始终获得批准(例如超过 90%),这就是它理解任务边界并正确推理的证据。如果提议经常被拒绝,你就得到了一个信号,即在信任该智能体进行自主操作之前,它需要更受限的作用域或更好的指令。

第 3 阶段:渐进式自主

只有在第一和第二阶段证明了可靠性之后,智能体才会获得写入权限,而且即便如此,也是递增的。标准框架区分了三种模式:

  • 人工在环(Human-in-the-loop):执行前的每项行动都需要明确批准。用于高风险操作 —— 数据库变更、基础设施更改,以及任何无法轻易回滚的操作。
  • 人工监控(Human-on-the-loop):智能体在大多数决策上自主行动,人类仅在异常检测器触发时进行监控和干预。智能体实时执行,但有一个监督层在观察。
  • 人工离环(Human-out-of-the-loop):完全自主,仅预留给具有长期零异常记录的成熟智能体,且仅用于理解清晰、有边界的任务。

从 HITL 到 HOTL 再到 HOOTL 的晋升应该由数据驱动,而不是由时间驱动。智能体不是在 30 天后自动晋升到下一层级 —— 而是在经历了 30 天零异常、一致的决策模式且没有越权尝试后才晋升。如果这些条件中有任何一项被打破,它将退回到上一个层级。

什么可以作为提权信号

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