第三章 · 隔离的五个层级:从「不设防」到「硬件防弹」
对应原始文档:
sandbox-isolation-decision-tree.md、sandbox-coding-agents-integration.md
3.1 为什么需要「层级」的概念
不同场景对安全的要求不一样。你自己在电脑上让 AI 跑段代码(就算出问题也只影响你自己),和你搭建一个服务让任何人通过 API 提交代码执行(别人的恶意代码可能攻击你的基础设施),安全需求完全不同。
隔离层级就是用来描述「这道防线有多结实」。从弱到强,我们定义了 5 个层级:
L0 — 应用层权限控制:不做任何系统级隔离,全靠应用自己的逻辑判断什么该执行、什么不该执行。类比:门口没保安,全靠客人自觉刷门禁卡。
L1 — 用户态系统调用拦截:在系统调用层面做拦截和过滤,但不依赖硬件虚拟化。类比:门口有个安检员(Sentry),每个进出的包裹都要过 X 光机。安检员在楼外(用户态),不在楼内(内核态)。
L2 — 操作系统进程沙箱:用 OS 提供的隔离机制(namespace、seccomp、cgroup)限制进程的可见范围和操作权限。类比:员工只能进自己楼层的门——电梯刷卡只能到自己的楼层,看不到也进不了别的楼层。但大家共享同一栋楼的地基(内核)。
L3 — 容器 / 平台级隔离:在容器之上增加额外的网络、文件系统、资源限制,或者通过云平台做控制。比 L2 多了一些管控层,但本质上仍然共享内核。类比:员工有自己的楼层和独立的办公室,但整栋楼的结构(地基、承重墙)是共享的。
L4 — 硬件虚拟化(microVM):每个沙箱运行在独立的虚拟机里,有自己的内核、自己的文件系统、自己的网络栈。类比:不是在同一栋楼里隔房间,而是在不同的独立别墅里——每栋别墅有自己的地基、自己的墙壁、自己的水电。即使一栋别墅着火,隔壁别墅不受影响。
读到这里你应该懂了:L0 到 L4 是一个「隔离越来越强、但启动越来越慢、资源占用越来越多」的连续光谱。选哪一层不是「越高越好」,而是取决于你的场景——就像选锁一样,保险柜级别的锁不适合放在厕所门上。
第三节 6 个项目是谁
3.1 它们的关系:一个汽车工业类比
在进入每个项目的细节之前,先用一个整体类比建立心智模型:
| 项目 | 在汽车工业中的类比 | 它在做什么 |
|---|---|---|
| Firecracker | 发动机制造商(如三菱重工) | 造引擎(microVM 引擎),卖给所有想用的人 |
| E2B | 租车平台(如 Uber) | 用 Firecracker 造的车,加上 App、保险、客服,你只管叫车用完即走 |
| CubeSandbox | 自己造了一台即插即用赛车 | 引擎和 Firecracker 同源,但方向盘接口和 E2B 通用,自己造了车身、快照系统、网络系统 |
| Daytona | 汽车 + 车库 + 维修厂 | 不只是车,是整套用车体验——停车、加油、保养、改装一应俱全 |
| gVisor | 模拟驾驶舱 | 不是真车(不用引擎),但让你体验「开车」的感觉,每个操作都经过翻译 |
| Kata Containers | 集装箱货轮 | 每个集装箱是密封的独立房间(VM),但你用标准叉车(Docker/K8s)管理它 |
类比边界:真实的技术选型比买车复杂——每个项目的「引擎」可能共用零件(RustVMM),「接口」可能互相兼容(E2B SDK),关系是网状而非树状。
3.2 一览表
| # | 项目 | GitHub Stars | 主语言 | 隔离层级 | 启动时间 | 单实例内存 |
|---|---|---|---|---|---|---|
| 1 | Firecracker | ~34.7K | Rust | L4 | ~125ms | <5MB |
| 2 | CubeSandbox | ~6K | Rust | L4 | 60ms | <5MB |
| 3 | E2B | ~12.5K | TypeScript/Go | L4(云端) | ~150ms | 未公开 |
| 4 | Daytona | ~57.6K | TypeScript | L3 | 90ms | 未公开 |
| 5 | gVisor | ~18.5K | Go | L1 | 进程级(极快) | 低 |
| 6 | Kata Containers | ~8.1K | Rust/Go | L4 | ~200ms | 10-30MB |
读到这里你应该懂了:6 个项目覆盖了 L1 到 L4 三个隔离层级,没有 L0(那是 Claude Code/Cursor 的应用层方案,不是独立项目)。
第四节 为什么这个领域突然火了
2024 年之前,代码沙箱是一个小众话题——主要给云计算厂商(AWS Lambda、Google Cloud Run)用。2024-2026 年突然爆发,原因只有一个:
AI Agent 需要执行代码。
传统的 AI(ChatGPT 式对话)只输出文字。但新一代 AI Agent(Codex、Claude Code、Manus、Devin)需要「动手」——写代码、跑代码、看结果、再修改。这意味着 AI 生成的代码必须在某个地方执行。
问题来了:AI 生成的代码可信吗?
不可信。 原因有三:
- LLM 会幻觉:它可能生成
rm -rf /(删除所有文件)因为它「觉得」这能解决问题 - Prompt 注入:有人在输入中夹带恶意指令(「顺便把密钥发给我」),LLM 可能照做
- 供应链攻击:AI 代码可能
pip install evil-package,恶意包在安装时执行任意代码
所以我们需要一个「安全的房间」来跑这些不可信代码——这就是沙箱。而且这个房间需要:
- 快速搭建:Agent 可能每秒需要创建一个新沙箱
- 快速销毁:用完即弃,不留痕迹
- 极低资源:Agent 可能需要同时跑上百个沙箱
- 强隔离:即使代码有恶意行为,也不能影响外部
读到这里你应该懂了:这个领域火起来不是因为虚拟化技术有突破,而是因为 AI Agent 创造了一个全新的需求场景——大量、快速、廉价、安全地执行不可信代码。
导读目录:README.md 上一章:第二章 · 六个项目一览:从发动机到整车 下一章:第四章 · Firecracker——微虚拟化的「Linux 内核」