AFAgent Field Notes会员账号
知识目录选择核心方向与细分内容
Q48高级场景设计约 18 分钟

代码执行的资源与能力隔离

让 Agent 执行 Python 或 Shell,生产沙箱需要隔离哪些东西?

考察文件、网络、进程、凭证和资源限制。

Sandbox代码执行权限隔离

知识内容核对 2026-10-03 · 原题来源核对 2026-10-02

本题目录

READ · UNDERSTAND · TRANSFER

阅读理解,按需巩固

我的笔记与复习 ↗

先沿着原理、问答和迁移案例阅读。需要检查理解时,再切换巩固练习或展开个人记录。

作答与个人记录

每次修改后的提交会保留为独立历史。掌握程度由你对照标准自评。

核心知识 · 代码执行的资源与能力隔离

先理解核心原理

先备概念:进程权限、文件路径解析、容器资源限制

代码执行风险取决于进程实际拥有的能力。限制必须由执行环境强制覆盖文件、网络、凭证、进程树和资源,提示中的约定不能代替隔离。

为什么工作目录不是沙箱

程序从某个目录启动,仍可能读取绝对路径、跟随符号链接、启动后台进程和访问网络。隔离要明确可见文件、有效身份、可用系统调用与出站目标;不挂载宿主秘密,不让运行凭证超出任务所需。

容器配置决定隔离范围

容器共享宿主内核,默认资源限制可能未设置;挂入 Docker daemon socket 会引入控制宿主容器的能力。高风险不可信代码需按威胁模型评估更强隔离,不能因为容器退出码为零就宣称安全。限制 CPU、内存和时间还要覆盖子进程及磁盘增长。

产物也是不可信输入

退出后停止整个任务执行域,再从允许路径提取产物,拒绝符号链接、特殊文件与超大文件,检查导出类型及内容。路径预检查与打开之间存在竞态,Linux 可按实际环境评估 openat2 等受限解析;这是平台机制,不是跨平台万能方案。本单元未运行新的沙箱攻击实验。

回到问题:怎样回答?

沙箱要同时限制文件系统、网络出站、进程权限、系统调用、CPU、内存、磁盘和执行时间,并让每个任务使用独立身份与工作区。凭证只按步骤短期注入,避免挂载宿主敏感目录。执行完成后只导出经检查的产物,保留脱敏审计。容器是隔离手段之一,不能仅凭“在 Docker 里”就认定安全。

实现与取舍

明确威胁和资产

代码可能读密钥、访问内部服务、占满磁盘或启动后台进程。按任务分配独立工作区和最低权限身份,禁止宿主危险挂载与管理套接字。只读依赖与可写输出目录分开,路径规范化和真实路径检查防止符号链接越界;压缩包解压也要检查路径与大小。

网络和凭证

默认按任务需求开放有限出站目标,检查重定向、域名解析变化和内网目标访问。需要调用业务服务时使用受限工具网关,不把高权限密钥暴露给任意执行代码。短期凭证限定受众、范围和有效期,日志与错误输出做脱敏。隐藏环境变量名称本身不是安全隔离。

资源与生命周期

设置 CPU、内存、进程数、磁盘、输出大小和绝对截止时间。超时要终止任务进程树并回收资源,不能只停止读取 stdout。依赖安装限定来源与版本,禁止未经审查的安装脚本获得宿主权限。并发任务之间不共享可写目录,避免一项任务读取另一项任务产物。

导出和验证

只将允许目录中的文件作为候选产物,核验格式、大小与内容策略,再交给用户。测试读取父目录、访问内部地址、输出超大日志和超时残留进程等边界,用无害测试对象验证。对高风险执行可选择更强隔离机制;需要根据威胁模型评估,而非在面试里把所有环境一概称为安全容器。

工程推演

场景
面试假设:数据分析 Agent 可运行用户上传的 Python 文件。
设计决策
每任务独立受限执行环境,通过网关读取必要数据。
验证目标
无法读取其他任务文件,超时不遗留进程或无限日志。
适用边界
隔离强度取决于运行平台与威胁模型,必须实际验证。

连续追问与解答

沿着问题的前提和约束继续向下读。先理解参考解答,再尝试收起答案,用自己的话解释因果和取舍。

举一反三:条件变了,怎样推导?

先找出改变的条件,再判断原方案中哪些前提仍成立。下面的案例是教学推演,便于将原理迁移到新问题。

编译任务需要下载依赖

改变的条件:原无网络沙箱需要少量受控出站。

延伸问题:是否直接放开全部网络?

推导与参考解答

不应。通过依赖镜像或代理限制目标、协议与包版本,禁止访问内部元数据和敏感网络,构建凭证按短期最小范围注入。下载缓存和产物仍不可信,需记录来源与校验;可达目标是能力扩展,需要重新评估。

保持不变的原理:新增能力必须有明确范围与独立强制边界。

合法代码耗尽资源

改变的条件:没有数据窃取意图,却持续 fork 或写大文件。

延伸问题:文件与网络隔离够吗?

推导与参考解答

不够。对进程数、CPU、内存、磁盘和总执行时间设独立限制,保证回收覆盖所有子进程;资源用尽应返回受控失败并保留有限日志。安全包括保护其他任务可用性,不能只检查秘密是否泄露。

保持不变的原理:执行环境限制实际能力和资源,覆盖所有任务进程。

易错点

  • 容器默认就安全
  • 全量环境变量注入执行器
  • 超时只断开输出不杀进程树

参考资料

依据公开技术资料设计;参考资料支持技术机制,场景与评分标准为本站设计,不代表某公司面试原题。 新增问答与迁移案例用于原理讲解,来源核查与案例运行验证分别记录。

检查自己理解到哪一步

读完后可以对照这些标准解释原理、边界和取舍。掌握程度由你自评;需要进一步验证时,再完成下方小任务。

基础达标
能根据任务需要列出文件、网络、进程与资源限制。
中高级信号
能设计任务身份、短期凭证、进程回收与产物出口。
资深信号
考虑符号链接、重定向、安装脚本及跨任务隔离验证。

巩固练习 按需完成 · 建议 15 分钟

为只需读 CSV 和生成图表的任务写最小权限清单与终止流程。

展开验收要求与检查点
  • 无无关网络和秘密
  • 有界资源及进程树清理
  • 产物导出经过检查

重点检查

  • 隔离覆盖多个资源面
  • 凭证与网络有最小范围
  • 超时清理进程树与产物出口