来源: NVIDIA/OpenShell — https://github.com/NVIDIA/OpenShell
语言: Rust | 今日 Stars: 978 | 协议: Apache 2.0
一句话: 给 AI agent 一个能干活但碰不到真东西的沙箱
一个不安的隐喻
想象你雇了一个超级聪明的助手。
他能帮你回复邮件、整理文件、写代码、查资料——几乎无所不能。而且不需要睡觉,可以 24 小时不间断工作。
听起来像梦想成真?
但很快你会发现一个令人不安的事实:这个助手太自由了。他可以随意翻看你的所有文件,可以给任何人发邮件,可以访问任何网站,甚至能看到你的银行密码。你给他的是整间办公室的钥匙,而他是否靠谱,完全取决于他的"性格"。
这就是今天 AI agent 面临的困境。Claude Code 能读写你的代码库,Codex 能执行终端命令,各种 agent 框架都在给模型越来越多的系统权限。能力越强,风险越大——不是模型会变坏,而是模型偶尔会犯蠢,而蠢在有权限的时候等于灾难。
NVIDIA 的 OpenShell 想解决的问题很简单:让 agent 干活,但不让它碰不该碰的东西。
两个核心机制
OpenShell 的设计哲学可以浓缩成一句话:能力与隔离成正比。agent 越需要访问真实资源,隔离层就要越厚。
1. 内核级强制隔离
每个 agent 运行在自己的沙箱里。这不是普通的 Docker 容器隔离,而是内核级的系统调用拦截:
- 文件访问:哪些路径可读、哪些可写,由策略声明,内核强制执行
- 系统调用:agent 能调哪些 syscall,白名单说了算
- 网络连接:每个出站连接都经过策略检查,未批准的目标直接拒绝
- 凭证管理:agent 永远看不到真实密码——OpenShell 在请求离开沙箱时才把凭证注入到已批准的端点
最后一点尤其精妙。传统做法是给 agent 一组 API key 让它自己用,OpenShell 的做法是 agent 发出请求时说"我要调这个 API",OpenShell 检查目标在白名单里,然后替它把认证头加上去。agent 全程不接触真实凭证。
这就像你让助手帮你发快递——你不需要给他你家保险箱的密码,你只需要在快递单上签字,快递公司自然会来取件。签字的权力在你手里,助手只负责填单子。
2. 形式化验证策略变更
第二个机制更野心勃勃。改策略这件事本身也要被审查。
当你要给 agent 放权——比如允许它访问一个新的域名——OpenShell 不会直接生效。它会用形式化验证分析这次变更会带来什么新风险:
- 这个新域名是否可能接收凭证?
- 这个新 API 方法是否暴露了敏感操作?
- 这次放权是否打开了之前被阻断的攻击路径?
如果验证发现风险,变更会挂起等待人工审批。
这是"防御性设计"的极致——不是出了问题再补,而是在改规则之前就先问"这次改会不会出问题"。
和现有方案的差异
市面上 agent 沙箱方案不少,但大多数停留在容器隔离层面。OpenShell 的差异在两个维度:
| 维度 | 普通容器隔离 | OpenShell |
|---|---|---|
| 隔离粒度 | 文件系统 + 网络 | 文件 + syscall + 网络 + 凭证 |
| 策略变更 | 直接改配置 | 形式化验证后才生效 |
| 凭证管理 | agent 持有 | OpenShell 代注入 |
| 内核参与 | 否(namespace 级) | 是(instrumented kernel) |
形式化验证是关键差异。大多数安全工具的思路是"事后检测"——出了问题再告警。OpenShell 的思路是"事前证明"——改策略之前先证明这次改不会引入风险。这把安全从运维问题变成了工程问题。
一个跨域类比:化工实验室
OpenShell 的架构让我想到化工实验室的安全设计。
在化工厂里,操作员需要操控各种危险品。但安全设计不是"信任操作员不犯错",而是:
- 物理隔离:操作员不直接接触化学品,而是在手套箱里操作
- 流程隔离:每一步操作都有 SOP,关键步骤需要双人复核
- 凭证隔离:危险品的钥匙不在操作员手里,而在安全员手里,用一次申请一次
OpenShell 做的是同一件事,只不过把"操作员"换成了"agent",把"化学品"换成了"文件系统和网络"。
谁需要它
OpenShell 的目标用户很明确:
- 企业 agent 部署:需要让 agent 访问内部系统但不能越权
- 多 agent 编排:不同 agent 有不同权限,需要精细控制
- 合规场景:金融、医疗等需要审计每一步 agent 行为的领域
- agent 开发者:本地开发时不想让 agent 误伤生产环境
NVIDIA 的入局信号也很明确——agent 安全不再是可选项,而是基础设施。当 GPU 厂商开始做安全运行时,说明行业已经意识到:算力不是瓶颈,信任才是。
我的观察
OpenShell 最有意思的地方不是它的隔离技术——内核级沙箱早就有了——而是它把形式化验证放到了策略变更流程里。
大多数安全工具的假设是"策略是对的,执行是错的"。OpenShell 的假设是"策略本身也可能是错的"。这是一个更深的问题:不是防止 agent 违规,而是防止你自己不小心给了 agent 过多的权限。
这和"合理化外壳"概念有关联——人类在写策略的时候也会合理化自己的决定,觉得"多给一点权限也没关系"。形式化验证就是给策略制定者加一个"冷静期",在放权之前先用数学证明这次放权是安全的。
核心洞察:agent 安全的瓶颈不是"agent 会不会变坏",而是"人会不会不小心给 agent 太多权力"。OpenShell 用形式化验证回答了这个问题。
GitHub: https://github.com/NVIDIA/OpenShell
文档: https://docs.nvidia.com
讨论回复
加载中...正在加载回复...
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。