← 返回题库
第 153 题 · Agent · 困难

允许 Agent 执行代码时,如何设计 Sandbox、网络和资源隔离?

岗位专项 这代表什么?
✓ 资料核验 来源说明:公开面经题库主题;公司归属未独立核验,技术答案依据原论文或官方文档整理
SandboxCode ExecutionIsolation
评论与补充 ↓
口述训练

先用自己的话答,再看参考说法

60 秒是练习上限,不是必须凑满。原理题讲清因果,设计题讲清约束,项目题只讲真实证据。

别照着背。参考说法只用于对照;直接回答问题,简单题说清楚就收尾。项目题只用自己的经历和数字。

面试时怎么答

代码执行题要先明确威胁模型:模型生成的程序按恶意代码处理。随后从进程、文件系统、网络、凭据和资源五个边界说明隔离;需要联网时只能走审计代理和短期凭据。面试官若问容器是否足够,要指出容器不是完整安全边界,还需内核隔离、系统调用限制和逃逸演练。

可以这样答:

Agent 生成的代码应按恶意代码处理,在短生命周期沙箱中运行,默认断网、不挂载宿主目录、不注入长期密钥,并限制 CPU、内存、进程数和执行时间。确需访问外部服务时,只允许经过审计代理并发放短期、最小权限凭据。输出文件还要检查路径穿越、文件类型和活跃内容,容器本身不能被当成唯一安全边界。

核心回答

代码执行平面应与编排和数据平面隔离。每次任务创建短生命周期 Sandbox,使用非特权用户、只读基础镜像、临时工作目录、受限系统调用和独立资源配额;禁止挂载宿主 Docker Socket、云凭据和共享敏感目录。容器提供的 Namespace 不是完整信任边界,高风险多租户场景可使用 gVisor、MicroVM 或等价的强化隔离。

网络默认拒绝出站。确需访问包仓库或业务 API 时,通过域名/方法白名单代理,并用 Secret Broker 发放绑定任务、目标和有效期的临时凭据。下载依赖应锁版本、校验哈希并经过制品代理。执行结果只允许从指定目录按大小和类型导出,防止路径穿越、符号链接、HTML/脚本活跃内容和隐蔽外传。

展开说明

资源限制至少覆盖 CPU、内存、GPU、磁盘、进程数、打开文件数、输出字节和墙钟时间。超时终止必须杀死整个进程树并回收卷。缓存依赖可提高性能,但要隔离写权限并防止跨租户缓存投毒。

安全扫描不能证明任意代码安全,只能作为纵深防御。真正边界是隔离运行时、最小权限、网络策略、短期凭据、审计和销毁验证。

工程实践

建立反向 Shell、读取宿主文件、访问元数据服务、Fork Bomb、磁盘写满、依赖投毒、符号链接和大输出测试。记录 Sandbox 镜像与策略版本、系统调用拒绝、DNS/HTTP 出站、资源峰值和销毁状态。安全目标是逃逸与未授权出站为零,同时报告启动 P95、任务成功率、超时率和每任务成本。

常见追问

  1. 普通 Docker 容器为什么可能不够? 容器与宿主共享内核,内核漏洞或错误的特权/挂载配置会扩大逃逸风险;高风险代码需更强隔离和纵深控制。
  2. Agent 需要安装依赖时怎么办? 通过受控制品代理访问锁版本与哈希的包,禁止任意互联网下载;缓存只读并防跨租户投毒。
  3. 网络完全关闭是否就安全了? 不是;代码仍可能耗尽资源、读取错误挂载、利用内核漏洞或在导出文件中注入恶意内容。

一句话复习

把生成代码当恶意负载,用强化隔离、默认断网、短期凭据、资源上限和可验证销毁构成边界。

参考资料

无需账号 · 原地交流

评论与补充

评论会直接显示在这道题下面。可以写自己的答法、继续追问或指出错误,不需要 GitHub 账号,也不会跳转到 Issue;内容会公开,请勿填写个人隐私、公司机密或受保密约束的材料。

正在加载评论…