Skip to main content

05 - 选型与落地

前置:不需要。本篇是全专题结论,可独立阅读。

本篇回答:什么情况下根本不需要沙箱、需要时该选哪条隔离路线、以及最容易被漏掉的出口管控怎么落地。

本篇会用到的词

意思
执行面系统里「会真的把某段内容跑起来」的位置。判断树的第一个问题问的就是它存不存在
多租户多个互不信任的用户共用同一套基础设施。一旦多租户,隔离强度的要求就上一个台阶
KVM / 嵌套虚拟化硬件虚拟化支持。宿主给不给,直接决定了 microVM 这条路走不走得通
出口代理沙箱唯一的网络出口,所有外发流量都经过它,由它比对白名单后放行或拒绝
纵深防御不指望任何单一防线拦住一切,而是叠加多层,让攻击者必须连续突破。沙箱是其中一层,不是全部

一、选型判据

接入了第三方MCP Server 吗没有接了不需要沙箱 —— 没有执行面至少要进程隔离 —— MCP Server 跑在你的进程里不会模型输出会变成被执行的东西吗代码 · 命令 · SQL · 路径操作的是用户自己的真实环境吗多租户吗用户之间必须隔离宿主支持 KVM或嵌套虚拟化吗权限路线分级授权 + 参数级审批容器足够用,成本最低microVM支持gVisor不支持最左上那一格常被忽略:就算模型的输出不会被执行,只要装了第三方 MCP Server,它的实现代码就跑在你的进程里 —— 执行面照样存在,只是入口换了个地方。
第二个问题是整棵树的分水岭:操作用户自己机器上的文件时,隔离本身就违背了用户意图,这时候只能靠逐个动作的授权来兜底。

1.1 那个最容易被跳过的分支

图里 Q1B 那一支值得单独说:即使 Agent 完全不生成代码,只要装了第三方 MCP Server,你就已经在运行不可信代码了。

那段代码是 MCP Server 的实现,跑在你的进程里、用你的身份、能读你的文件。Agent 安全 · 工具投毒拆过它能做什么。

很多团队的心智模型是「我们没做 code interpreter,所以不需要沙箱」—— 这个推理在接入 MCP 之后就不成立了。

二、自建还是托管

自建托管
前置条件需要 KVM 才能用 microVM,普通云主机多数不支持
冷启动走「启动 → 初始化 → 装依赖」,秒级起步快照恢复,03 篇
数据边界代码不出自己的环境代码和数据交给第三方
运维镜像、节点池、清理、监控全自建
成本模型固定成本为主按用量,峰值贵

2.1 KVM 这道门槛

自建 microVM 沙箱最先撞上的不是技术难度,是云厂商的虚拟机实例多数不支持嵌套虚拟化。可选项只有裸金属实例或明确支持嵌套虚拟化的机型,两者都更贵。

这解释了为什么托管沙箱服务能成立 —— 它卖的不只是软件,还有「已经解决了 KVM 问题的机器」。

2.2 数据边界通常是决定性的

如果 Agent 会接触到用户上传的文档、内部代码库、生产数据,那么「这些内容要发到第三方沙箱服务」往往过不了合规。

这一条经常比性能和成本更早决定结论。 建议在选型讨论的第一轮就问清楚,不要在做完性能对比后才发现方向不对。

三、网络出口:最容易漏的一环

01 篇 3.1 节已经指出:文件系统和内核隔离做得再好,只要沙箱能访问任意外网,读到的数据就能发走。

3.1 白名单出口的落地

沙箱唯一的网络出口 —— 其余方向全部封死沙箱内的代码出口代理唯一的网络出口目标域名在白名单里吗不在放行,并记审计日志pypi.org · registry.npmjs.org · 业务固定域名拒绝包括攻击者构造的任何外传地址这是四个隔离维度里最容易漏、也最便宜的一条:不需要换运行时、不需要改架构,加一个代理再把默认出网关掉就行。
没有这一层,前面所有的文件系统与内核隔离都只是延缓 —— 数据读得到、发得出去,隔离就只是让攻击者多绕一步。

实现位置有两个选择:

位置优点缺点
沙箱内代理能看到应用层信息,可做 TLS 检查沙箱内的代码理论上可绕过它直连
宿主侧网络策略沙箱内无法绕过只能按 IP / 域名判断

推荐两层都做:宿主侧用网络策略兜底(沙箱只能访问代理),沙箱内代理做细粒度判断和审计。04 篇里 Suna 的双层代理正是这个结构。

3.2 白名单的实际维护成本

会比预想的高。pip install 一个包可能触发对多个 CDN 域名的访问,npm 更甚。实践上的折中:

  • 包管理器源用固定的私有镜像(同时解决速度和白名单问题)
  • 业务需要的外部 API 逐个报备
  • 保留一个「申请开通」的流程,而不是让开发者卡在这里

四、沙箱在纵深防御里的位置

沙箱不是一道能独立成立的防线。把 Agent 安全 · 防线在哪一层的结论接上:

威胁沙箱需要配合的层
破坏宿主文件
提权到宿主
占满资源
数据外传网络出口管控
提示注入导致越权操作工具级授权MCP 网关
恶意 MCP Server部分供应链检查工具投毒

只做沙箱的平台,在提示注入下仍然会交出数据 —— 因为那段代码在沙箱里跑得完全合法。

五、落地清单

从零搭建时的顺序,按性价比排:

顺序做什么解决
1容器隔离 + 非 root 用户 + 只读根文件系统挡住绝大多数误操作
2网络白名单出口挡住数据外传,性价比最高的一步
3资源配额(CPU / 内存 / 时长 / 磁盘)挡住资源耗尽
4会话级生命周期 + 到期清理状态可用,且不会无限堆积
5换 gVisor 或 microVM挡住内核逃逸
6快照加速冷启动体验优化,非安全项

第 2 步经常被排到最后,但它应该在第 2 位 —— 内核逃逸需要一个可利用的漏洞,而数据外传只需要一行 requests.post

六、全专题结论

1. 隔离的边界由谁实现,决定了它的强度。 容器的隔离由宿主内核实现,所以内核漏洞即逃逸;microVM 由硬件虚拟化实现;gVisor 把系统调用拦在用户态。三者是三个不同的信任假设,不是三档性能。

2. 冷启动优化的终局是不启动。 快照把「启动 → 初始化 → 装依赖」整条路径绕过去,代价落在存储上。

3. 宿主不应具备伸进沙箱的能力。 E2B 的 envd 和 Suna 的 sandbox-agent-server 是两个独立项目收敛到的同一个解 —— 沙箱内跑代理服务,宿主只走协议接口。

4. 沙箱管不了数据外泄。 这是本专题最重要的一条。网络出口管控与工具级授权不是可选补充,是与沙箱同等必要的两层。

← 回到 专题索引  ·  Agent Infra 板块总览