章节摘要:「上沙箱」不是一个动作,而是一道选择题:进程级(seccomp / 能力裁剪)、容器(Docker,与宿主共享内核,靠加固收敛攻击面)、微 VM(gVisor 用户态内核或 Firecracker 独立内核,把内核漏洞也挡在门外)。三级之间是隔离强度、性能开销与运维复杂度的三角权衡:进程级最轻但边界最软;容器是性价比默认项,但共享内核意味着 runc 一类逃逸漏洞就是它的天花板;微 VM 最硬,代价是兼容性与运维面。本章先用一张对照表把三级放到同一把尺子下(攻击面、开销、复杂度、适用场景各有实测与官方数据支撑),再给出按攻击面选级的决策树——读代码型、写文件型、任意执行型 Agent 各有其默认答案,数据敏感度与多租户则会触发加档。读完本章,你该能写下自己项目的隔离级别决定及理由。
隔离强度(与宿主内核的距离)从近到远: 进程级 容器(Docker) 微 VM ┌──────────┐ ┌────────────────────┐ ┌──────────────────────┐ │ 你的进程 │ │ 容器进程 │ │ 容器/进程 │ │ seccomp │ │ 默认 seccomp+能力裁剪 │ │ runsc:用户态内核 Sentry│ │ 能力裁剪 │ │ (仍是宿主内核) │ │ Firecracker:独立内核 │ ├──────────┤ ├────────────────────┤ ├──────────────────────┤ │ 宿主内核 │ │ 宿主内核(共享) │ │ 隔离层(不直接触宿主内核)│ └──────────┘ └────────────────────┘ └──────────────────────┘ 边界软 默认项:性价比高 边界硬:内核漏洞也挡 开销最小 开销小 开销与运维成本最高
一句话金句:隔离级别不是越高越好,而是「刚好盖住攻击面」最好。
(文字流程图)垫层越厚边界越硬:策略卡(进程级)──▶ 共享内核上的约定(容器)──▶ 拦截转发(runsc)──▶ 独立内核(Firecracker)。
┌────────────────────────┐ ┌────────────────────────┐ │ 1.1 三级实操对比 │ │ 1.2 按攻击面选级别 │ │ 回答「三级各是什么、 │ ────▶ │ 回答「我该用哪一级」 │ │ 多硬、多贵」 │ │ 决策树 + 加档/降档规则 │ │ 供给知识 │ │ 做出决定 │ └────────────────────────┘ └───────────┬────────────┘ │ 决定隔离级别 ▼ 第 2 章 从零搭一个 Agent 沙箱 (选定级别的完整落地)