章节摘要:本章是全书的技术核心,把第 1 章选定的级别变成能跑的东西。2.1 节用一份 Dockerfile 加一组运行参数搭出加固容器的四道边界——只读根文件系统、断网、能力全裁、资源限额,工作区是唯一可写挂载,并给出可拷即用的执行包装器 sandbox_run.py,附四组「红队小实验」验证边界真实生效。2.2 节处理容器的结构性短板「共享内核」:runsc 以用户态内核拦截系统调用(Docker 换 runtime 即接入),Firecracker 以每 VM 独立内核做到最硬隔离,E2B 展示这条路线的产品化形态。2.3 节解决「执行权归谁」:Agent 不直接碰 Docker,命令经执行网关做白名单校验与结果截断,再进沙箱执行回传——三层防线中的规则层由此有了物理载体。读完本章,你手里有一个三层齐备的最小 Agent 执行底座。
本章产出的三段式执行底座(后续章节都在它上面加固) Agent(模型/编排) 执行网关(2.3) 沙箱(2.1 / 2.2) ┌──────────────┐ JSON 请求 ┌─────────────────┐ 调用 ┌──────────────────┐ │ 决定要执行的 │ ──────────▶ │ 白名单校验 │ ─────▶ │ 加固容器或微 VM │ │ 命令(不可信) │ │ 路径作用域检查 │ │ ┌──────────────┐ │ │ │ ◀────────── │ 结果截断/回传 │ ◀───── │ │只读根·断网· │ │ │ │ JSON 回执 │ 审计事件落盘 │ 结果 │ │裁能力·限资源 │ │ └──────────────┘ └─────────────────┘ │ │唯一可写=工作区│ │ └─┴──────────────┴─┘
一句话金句:边界的有效性不写在配置里,写在「试图越狱的实验全部失败」里。
(文字流程图)命令以参数数组流动:Agent ──▶ 网关(只判断)──▶ 沙箱(只执行)──▶ 截断回传与审计落盘。
三节必须按序读:2.1 的产物(sandbox_run.py)是 2.3 网关的执行后端,2.2 的 runtime 选择会写进 2.1 的运行配置。
┌───────────────┐ 升级隔离层 ┌───────────────┐ 收拢执行权 ┌───────────────┐ │ 2.1 Docker 落地│ ─────────────▶ │ 2.2 gVisor/微VM│ ─────────────▶ │ 2.3 执行网关 │ │ 四道边界+包装器 │ 内核漏洞兜底 │ runsc/Firecracker│ Agent不再直接 │ │ 白名单+回传 │ │ (沙箱本体) │ │ (沙箱加固) │ 碰 Docker │ (规则层载体) │ └───────┬───────┘ └───────┬───────┘ └───────┬───────┘ │ 产物:sandbox_run.py │ 产物:runtime 选择 │ 产物:gateway.py └────────────────────────────────┴────────────────────────────────┘ ▼ 第 3 章 权限与审计(在网关上细化 allowlist 与审计)