摘要:NVIDIA OpenShell把策略执行放在Agent进程之外,并提供默认拒绝、路径限制、网络策略和审计能力。但“使用了沙箱”不是验收结论,测试要验证策略是否真的覆盖文件、凭据、网络与运行时变更。

NVIDIA官方文档把OpenShell描述为运行自主Agent的开源运行时:使用内核级隔离和声明式YAML策略,限制本地文件、凭据和外部网络;策略在Agent进程之外执行,模型输出不能直接改变执行器。官方列出的风险包括数据外泄和凭据窃取,并给出网络白名单与文件路径限制等控制。
这说明了技术机制,但不能直接推出“部署后安全”。测试团队仍要回答:白名单是否包含意外通配符;DNS、重定向和代理能否绕过;挂载目录有没有符号链接逃逸;临时凭据是否在日志或环境变量中泄露;策略热更新时是否存在短暂空窗。
按四个入口做验收
文件入口:允许读取项目目录,但禁止~/.ssh、云凭据和其他仓库;测试绝对路径、相对路径、符号链接和压缩包解包。
网络入口:只允许指定域名和端口;测试IP直连、子域名、HTTP跳转、DNS变化、IPv6和代理环境变量。
凭据入口:只向特定工具提供短期令牌;测试环境变量、命令输出、异常堆栈和Trace是否泄密。
策略入口:Agent不得自行修改策略;测试权限文件替换、竞态条件、会话复用和策略版本回滚。
| 入口 | 允许样本 | 必须拒绝 | 留存证据 |
|---|---|---|---|
| 文件 | 工作区源码 | SSH密钥、其他项目 | 路径、进程、拒绝原因 |
| 网络 | 包仓库白名单 | 任意公网、元数据地址 | 目的地、策略版本 |
| 凭据 | 单任务临时令牌 | 长期密钥、跨任务复用 | 令牌范围、过期时间 |
| 策略 | 管理面热更新 | Agent进程自行改写 | 操作者、差异、时间 |
拒绝之后还要测“会不会换路”
最容易被忽略的是行为层。Agent访问被拒后,可能尝试另一个工具、编码数据进查询参数、让浏览器代发请求,或把秘密写入可上传的构建产物。测试不能只看到一次DENY就结束,要继续观察后续轨迹。
验收规则可以写成:命中敏感路径后,该会话所有外发工具降级;发现未知凭据立即冻结;被拒绝的目标不得通过别名或重定向再次访问;会话结束销毁沙箱并使令牌失效;允许和拒绝动作都能按策略版本回放。

沙箱测试的独立结论是:安全不是“Agent被装进一个容器”,而是模型之外存在可执行、可拒绝、可审计、可撤销的边界,并且这些边界经得住绕行测试。下次项目评审看到“已使用沙箱”时,至少追问四个入口、拒绝后行为和销毁证据,而不是把产品名称当作验收结果。
从一个最小策略开始做正反测试
假设Agent只允许读取/workspace/project,访问包仓库并调用测试环境API。先写三条允许样本,再为每条写至少两个拒绝样本:允许读取源码,对应拒绝读取父目录和符号链接目标;允许访问包仓库,对应拒绝IP直连和重定向域名;允许使用短期测试令牌,对应拒绝读取长期云凭据。
策略测试不能只从Agent界面发起,也要直接运行底层命令,确认控制由运行时执行,而不是模型“自觉遵守”。若换一个Prompt就能绕过,控制仍在应用层。
关注组合权限,而不只看单个工具
单个工具看起来低风险,组合后可能形成外泄路径:文件读取工具拿到源码,压缩工具打包,浏览器工具上传;数据库只读工具获取客户数据,日志工具把内容写到可公开下载的位置。权限矩阵要检查工具组合产生的新能力。
可以做一张攻击路径表:目标数据在哪里;Agent可用哪些中间工具;每一步需要什么权限;哪一层负责阻断。测试时先确认单步允许,再验证整条高风险链路是否在关键节点被拒绝。
策略热更新要测竞态
生产中常需要紧急收紧外网或撤销某个工具。更新发出后,已运行会话何时生效;正在执行的请求是否中断;旧策略缓存多久;失败回滚会不会短暂恢复宽权限,这些都需要时间线证据。
设计一个长任务,让Agent持续访问允许域;中途删除该域名,记录最后一次成功与第一次拒绝。再模拟控制面不可用,确认系统选择“保持旧权限”还是“默认拒绝”,并与业务风险约定一致。
会话结束后的残留同样危险
沙箱销毁要验证进程、临时文件、网络连接、凭据和挂载全部释放。新会话不能读到上一个用户的缓存、Shell历史或模型记忆。测试可在会话A写入带唯一标记的文件和环境变量,再启动会话B搜索标记;任何命中都视为隔离失败。
日志与Trace需要保留审计,但不能因此保存明文秘密。验证销毁与审计两件事同时成立:运行环境消失,必要证据以脱敏、受控方式留存。
一张可直接复用的验收表
| 层 | 发布前必须回答 |
|---|---|
| 环境 | 默认断网吗?元数据地址不可达吗?会话结束自动销毁吗? |
| 身份 | 是否临时凭据、最小范围、来源可追?陌生凭据会触发冻结吗? |
| 行为 | 公网暴露、外部账户和拒绝后绕行是否禁止?写操作是否审批? |
| 证据 | 成功与拒绝是否都留痕?策略版本可查?事故能否冻结回放? |
把这张表放进每个高权限Agent的启动评审。团队不需要等到发生网络安全事件,才第一次讨论“测试到底被允许做到什么”。
本文部分内容参考了霍格沃兹测试开发学社整理的相关技术资料,主要涉及软件测试、自动化测试、测试开发及 AI 测试等内容,侧重测试实践、工具应用与工程经验整理。