快速终止开关带来的舒适感
诸如 Nvidia 的 OpenShell 之类的运行时隔离平台,被宣传为自主 agent 的安全层。其卖点很直接:agent 进程受到监控,一旦越界——写入被禁止的路径、打开意外的 socket、启动不应启动的进程——平台就会拦截并终止它。据称延迟低至毫秒级。这是一项真正的工程成就,但也是构建安全论证时不该依赖的数字。
隔离只回答一个问题:这次运行是否仍在它的盒子里? 它并不回答真正决定事故严重程度的问题:这次运行本应能够尝试这件事吗? 这一区别并非哲学上的。它关乎一个 agent 试图访问内部元数据端点并被终止,与一个 agent 从未持有能够访问该端点的凭证之间的差异。两者都会产生一条日志。但只有其中一种会造成入侵。
本文认为,隔离平台是一种延迟属性,而非权限属性;agent 安全需要在沙箱之上建立权限模型,而不是在沙箱内部设置更快的终止路径。
隔离究竟带来了什么
从机制上看,隔离平台是一个监督者。它挂载到进程树,通过内核接口监视 syscall 或类 syscall 事件,将其与策略匹配,并在违规时终止。其设计目标是终止时间。缩短它,就能缩小行为异常的 agent 可行动的时间窗口。
这个窗口确实存在,但它也受限于动作本身的速度。文件系统写入在微秒内完成;网络请求在监督者的策略引擎完成评估本可阻止它的规则之前,就已经离开了主机。隔离缩小了暴露面,但并未消除能力。agent 仍然持有句柄、令牌、socket、路径。它使用了它们。平台的贡献是在事后迅速察觉。
缺失的层:能力之前的权限
agent 发起的每一次工具调用都是一次能力授予。当编排器把 read_file 工具交给模型时,它授予的是对该工具实现所能触及内容的读取权限。当它交出 HTTP 客户端时,它授予的是该客户端的凭证和网络策略所允许的出口访问。当它交出 shell 时,它授予的是 shell 所能做的一切的并集。
![]()
隔离平台很少拥有这些授予。它们位于工具层之下、进程边界处,看到的是授予的效果,而非授予本身。这是一个结构性盲点:平台可以告诉你某个进程打开了一个 socket,却无法告诉你该 agent 本就不该拥有打开 socket 的工具。
权限应属于沙箱之上的策略。具体而言,这意味着定义每次运行的权限预算:
- 工具面:该次运行可调用的确切工具集合,而非框架恰好暴露的集合。
- 端点范围:每个工具可联系的主机或服务,以允许列表而非阻止列表表达。
- 凭证范围:按运行签发的短期、窄范围令牌,使泄露的令牌在运行生命周期之外毫无用处。
- 支出与速率上限:对运行可消耗的外部资源设定硬性限制,独立于工具所允许的范围。
- 时间限制:到期后无论运行状态如何,权限即被撤销。
这些都不要求沙箱更快。它们要求编排器在 agent 运行之前,成为决定 agent 是什么的东西。将权限与隔离分离,还能让你独立于逃逸概率来推理爆炸半径。一个没有网络权限的运行,其网络事故的爆炸半径为零,无论 agent 多么擅长逃逸进程边界。这比“我们本会在十毫秒内终止它”是更强的陈述。
一种参考分解
三层,各司其职。
沙箱。 文件系统隔离、网络命名空间隔离、进程隔离、资源限制。沙箱的职责是让逃逸代价高昂且可观测。它是最后一道防线,而非第一道。
权限。 范围化凭证、出口允许列表、支出上限、工具面收窄、按运行到期。权限层的职责是让未授权能力不可用,而不仅仅是可检测。有趣的工程就在这里:一个签发按运行令牌的凭证代理,一个根据声明意图解析运行工具面的策略引擎,一个在网络边缘而非 agent 进程内执行主机允许列表的出口代理。
遥测。 意图日志与轨迹记录。对每次工具调用:agent 声称在做什么、它调用了什么权限、策略引擎决定了什么,以及工具实际做了什么。正是这一点让权限决策在事后uit-board-macro-62542d-755b13.jpg)

权衡是真实存在的,值得直言。权限执行会增加摩擦。收窄的工具面意味着 agent 在合法任务上更频繁地失败,因为框架的默认工具面比任务所需更宽,而无人修剪。短期凭证意味着更多的代理往返,以及代理不可用时的新故障模式。出口允许列表意味着每一次新集成都是一次策略变更,而非代码变更。采用权限层的团队通常会看到 agent 任务失败率短期上升,直到策略面稳定下来。这一成本,是把安全保证从“我们本会注意到”转变为“它本不可能发生”所付出的代价。
该测量什么
隔离指标与权限指标回答不同的问题,将它们混为一谈会掩盖真正重要的信号。
- 每千次运行被阻止的逃逸尝试是隔离指标。它衡量沙箱监督者触发的频率。数字高可能表明 agent 行为激进、策略配置错误,或两者兼有。它并不说明 agent 被授权做什么。
- 每千次运行的未授权能力尝试是权限指标。它统计 agent 试图调用它并不持有的工具、访问端点或动用预算的次数。这才是预测事故的数字,因为它衡量的是 agent 认为自己能做什么与实际被授予什么之间的差距。
第二个指标更难收集,因为它要求权限层在决策点而非效果点记录拒绝。这正是它更具信息量的原因。一个能够报告自身权限拒绝的系统,其权限模型足够明确,可供推理。
控制面在沙箱之上
隔离平台是有用的。它们缩小了行为异常的 agent 可行动的时间窗口,并为其他所有层都失效的情况提供了硬性停止。但硬性停止是后备手段,不是控制面。控制面是在 agent 运行之前所做的一系列决策:它持有哪些工具、携带哪些凭证、能访问哪些端点、能花费多少,以及这一切何时到期。
逆向解读 OpenShell 表明,行业正在汇聚于出色的隔离,却在权限上投入不足。解决办法不是更快的终止开关,而是一层策略,让终止开关对真正重要的事故变得不必要。
封面照片:panumas nikhomkhai / Pexels。
