跳到主要内容

执行环境的隔离与沙盒

为什么 venv 不是沙盒?​

  • 常见误区: 把 Python 虚拟环境(venv)当作沙盒;
  • 事实: venv 只隔离包依赖,对文件系统、网络和进程没有任何安全约束;
  • 后果: 在 venv 中运行的代码照样可以删除任意文件、访问任意网络;
  • 前提: 通用执行工具(如 Python 解释器、Shell 终端)本质上允许 Agent 执行任意代码,需要特别的安全考虑;

隔离强度有哪些层级?​

层级机制与边界
进程级隔离直接在本地执行,Agent 生成的代码与本地用户拥有相同权限;Codex 的 workspace-write 模式、Claude Code 的只读起始权限与文件系统/网络沙盒会把默认可写范围限制在工作区内,越界访问或高风险操作需额外审批
容器隔离Docker 等容器提供独立的文件系统和网络栈,隔离更完整,但与宿主机共享内核,内核漏洞仍可能被用来逃逸
microVM/虚拟机Firecracker 等 microVM 提供带独立内核的硬件级隔离,是运行完全不可信代码的最强层级
  • 澄清: 实际权限取决于宿主的沙盒与审批策略,而非“本地执行”这一事实本身;
  • 参照: 执行工具的第一层防护(输入验证、权限控制)见 执行工具的安全分层;

隔离环境还需要哪些资源限制?​

  • 设置上限: 容器和 microVM/虚拟机隔离环境还应设置 CPU、内存、磁盘、网络的使用上限;
  • 目的: 防止恶意或失控的代码耗尽所有资源;

如何选择隔离层级?​

  • 本地开发且输入可信: 进程级机制加上宿主的工作区沙盒与审批通常够用;
  • 输入不可信、凭证敏感或操作不可逆: 即使是本地开发也应升级到容器乃至 microVM 级别的隔离;
  • 生产环境: 需要更严格的隔离层级;