1.2 按攻击面选级别


1.2 按攻击面选级别

本节摘要:选隔离级别不需要玄学,只需要先诚实回答两个提问:你的 Agent 能做什么(能力面:只读、读写工作区、还是任意执行)、它身边的数据有多值钱(敏感度:本机练习、生产代码、凭据与用户数据)。两个答案落在决策树上,五分钟得到一个默认级别:读代码型用进程级或断网只读容器;写文件型用加固容器(工作区唯一可写);任意执行型必须上微 VM,再叠执行网关与审批门。数据敏感度和多租户是两个加档器,各加一到两级。本节还校准一个现实:主流编码智能体多用「分级信任 + 审批门」而非全沙箱——本书的立场是保留分级,但每级都要有真实的隔离底座,而不是一层弹窗。

学习目标

  • 用「能力面 × 敏感度」两个提问定位自己项目的默认隔离级别。
  • 走一遍决策树,为读代码型 / 写文件型 / 任意执行型 Agent 各选出方案。
  • 说明两个加档器(数据敏感度、多租户)与两个降档条件(成本、体验)如何调整结果。
  • 写下自己项目的隔离级别决定及一段理由(练习)。

一、两个提问定级别

提问一(能力面):Agent 会执行的动作里,副作用最大的是什么?

档位 含义 典型示例
只读 不写任何文件、不联网 代码审阅、日志分析、文档问答
读写工作区 只写一个指定目录 生成代码、改配置、写测试
任意执行 跑任意命令、装依赖、起服务 编码智能体跑构建与测试、数据分析 Agent 装包

提问二(敏感度):沙箱隔壁放着什么?

档位 含义
低 本机练习目录,被删了也无妨
中 生产代码仓库、内部文档
高 凭据(SSH 私钥、云令牌)、用户数据、多租户混部

一句话原则:能力面决定「最低可用级别」,敏感度决定「要不要加档」。

二、决策树:三类 Agent 的默认答案

开始:你的 Agent 属于哪一类? │ ├─ 读代码型(只读) │ ├─ 数据低 / 中敏感 ──▶ 进程级沙箱(1.1 节 systemd 写法)或断网只读容器 │ └─ 数据高敏感或不可信来源 ──▶ 加固容器(只读挂载 + 断网) │ ├─ 写文件型(读写工作区) │ ├─ 单租户、工作区可随时销毁 ──▶ 加固容器(第 2.1 节完整方案) │ └─ 多租户 / 工作区含敏感文件 ──▶ 加固容器 + 微 VM(runsc)+ 执行网关 │ └─ 任意执行型(跑构建 / 测试 / 装依赖) ├─ 单租户、内部使用 ──▶ 加固容器 + runsc + 执行网关 + 审批门 └─ 多租户 / 面向外部用户 ──▶ Firecracker 微 VM(每任务一 VM)+ 网关 + 审批 + 审计 ​

三条默认答案的理由:

  • 读代码型:攻击面主要是「读」。断网 + 只读挂载后,泄露通道基本封死,进程级或轻容器足够,上微 VM 是浪费。
  • 写文件型:攻击面多了「写」。核心是让工作区成为唯一可写点(第 2.1 节的四道边界),容器是性价比最优解;敏感度高再垫 runsc。
  • 任意执行型:装依赖就把供应链风险(第 4 章主题)接了进来,跑任意命令等于直面内核漏洞这一类攻击面——微 VM 不是可选项,是底线。E2B 一类 Agent 沙箱产品正是用 Firecracker microVM 加快照池做每会话独立沙箱(公开设计资料,官方宣称冷启动约 150 毫秒),印证了这条路线的产业共识。

⚠️ 常见误区:把「容器里跑」当免责声明。若 Agent 在容器内以 root 运行、挂了 Docker Socket 或宿主根目录,隔离强度直接跌回进程级以下。级别的有效性取决于配置纪律,第 2.1 节逐参数展开。

三、加档与降档:决策树的两个修正器

加档器(各加一到两级):

  • 敏感度升高加一级:练习目录变生产仓库,读代码型从进程级升到加固容器。
  • 多租户加一级:同一宿主跑互不信任的负载,任何容器方案都应升到微 VM——租户之间的边界必须是内核级。
  • 外部输入比例高加半级:Agent 主要消费公网内容(爬取、issue、第三方文档)时,注入概率结构性上升,优先把网络出站纳入白名单管理(第 3.1 节)。

降档条件(谨慎使用):

  • 成本:微 VM 的运维成本(内核镜像、rootfs、网络管理)对小团队是真实负担;单租户内部场景可以用「runsc + 严格网关」替代 Firecracker。
  • 体验:审批门弹太多会训练出无脑点同意的人类。解法不是拆审批,而是把低风险动作放进更硬的沙箱里自动放行——沙箱越硬,审批越少,这是本书贯穿的设计观。

主流现状校准:公开搜索实测(2026-09)显示,主流编码智能体普遍采用分级信任 + 审批门而非全沙箱。本书不推翻它,而是补强它:分级的每一级都要有真实隔离底座——只读级真断网,工作区级真只读根,任意级真微 VM。审批门管「不确定」,沙箱管「兜底」,二者不可互相替代(原理见《Harness 工程:从零打造智能体运行环境》第 5 章)。

四、动手:写下你的隔离决定

按下面模板写三行(建议现在就写,第 2 章直接照此搭建):

能力面:____(只读 / 读写工作区 / 任意执行) 敏感度:____(低 / 中 / 高)+ 是否多租户:____ 隔离级别:____(进程级 / 加固容器 / runsc / Firecracker) 理由(一句话):____________________ ​

示例:能力面 = 任意执行(编码智能体),敏感度 = 中(生产仓库),非多租户 → 加固容器 + runsc + 执行网关;理由:跑任意构建命令直面内核漏洞,runsc 以最低接入成本垫掉共享内核风险。

本节要点回顾

  • 能力面定最低级别(只读→进程级或轻容器;读写→加固容器;任意执行→微 VM),敏感度与多租户触发加档。
  • 成本与体验是降档修正器,但「沙箱越硬、审批越少」说明二者通常不是取舍关系。
  • 主流「分级信任 + 审批门」保留,但每级必须有真实隔离底座,这是本书立场。
  • 隔离决定三行模板:能力面、敏感度、级别与理由。

决定已写下,第 2 章开始搭建:从加固 Docker 的四道边界(文件系统、网络、能力、资源)起步,给出完整 Dockerfile、运行配置与可拷即用的执行包装器 sandbox_run.py。


作者与出处
原作者: 灏天文库
整理: 灏天文库整理
本站整理收录,版权归原作者/开源协议所有;欢迎通过原文链接访问源仓库。
发布者: 作者: 灏天文库 转发
评论区 (0)
U