Agent Sandbox 从零开始 · 3.0
第 5 / 34 节 · 面向零基础读者

第 3 章:先认识四种容易混淆的东西

普通文件夹与虚拟环境

一个名叫 sandbox 的文件夹不自动形成隔离。程序如果仍能读取主目录或联网,文件夹名字不会拦住它。

Python 的 venv 主要隔离 Python 包及其解释器环境。它方便项目使用不同版本的依赖,但通常不限制操作系统文件权限或网络能力。因此 venv 解决依赖冲突,不能单独承担不可信代码的安全边界。

容器

容器通常利用 Linux 的命名空间、资源控制和权限机制,为进程提供独立的运行视图。镜像像一份环境模板,容器是模板启动后的一次实例。[1]

普通 Linux 容器共享宿主机内核。macOS 和 Windows 的 Docker Desktop 通常通过 Linux 虚拟机运行 Linux 容器。容器里的文件路径与宿主机路径需要区分,挂载可以把宿主机目录引入容器。

容器不等于自动安全。过宽挂载、特权模式、暴露 Docker 控制接口,都可能破坏预期边界。[1][3]

虚拟机与 microVM

虚拟机运行自己的客体内核,通过虚拟化形成不同的隔离边界。microVM 是强调精简和启动效率的一类虚拟机设计。Firecracker 是代表项目之一,使用 Linux KVM,并配合精简设备模型与部署加固措施。[6]

不要把“使用 microVM”理解成所有配置都安全。镜像、宿主机、网络、凭证管理和补丁更新仍然重要。隔离机制只是系统的一部分。

gVisor 与托管平台

gVisor 在应用与宿主机之间提供额外的系统调用处理层,目标是减少应用直接接触宿主机内核的范围。它不是完整硬件虚拟机,也不是换个名字的普通容器;兼容性和性能需要用实际任务验证。[5]

托管沙箱平台则替你提供创建环境、执行命令、管理文件等接口。E2B 是这一类产品的例子。[7] 平台产品、隔离机制和调度系统处在不同层次,不能简单排成同一条“安全排行榜”。

本书包含示例与资料导读;验证范围和来源见附录。