后端岗位面试题更新 2026-08-05

请说明使用 Docker 代码沙箱执行程序时,如何保障安全性?

后端开发风险判断安全意识系统设计Docker

考察说明

考查候选人对容器隔离机制的理解以及设计安全沙箱的工程能力。

回答思路

  1. 【回答框架 1】Docker 沙箱依赖内核命名空间与控制组实现资源隔离,但容器与宿主机共享内核,因此隔离强度有限,不能作为唯一安全边界。
  2. 【回答框架 2】常见的加固措施包括:以非 root 用户运行容器,丢弃所有 capabilities 并按需添加,启用只读根文件系统,限制网络与挂载,设置 CPU、内存、进程数和文件大小限制。
  3. 【回答框架 3】在容器外再叠加一层隔离,如 gVisor 或 Kata Containers,为程序提供独立的内核或系统调用拦截,增强恶意代码的逃逸难度。
  4. 【回答框架 4】执行流程上,应使用专用镜像、禁止交互式终端、限制文件系统写入,并通过超时控制和资源配额防止资源耗尽,最后对容器进行清理和回收。
  5. 【关键点 1】容器隔离基于内核命名空间与控制组,隔离性受限于共享内核,逃逸风险存在。
  6. 【关键点 2】以非 root 运行、丢弃 Linux capabilities、只读根文件系统是基础加固措施。
  7. 【关键点 3】可在 Docker 外层增加 gVisor 或 Kata 等安全运行时,提供额外隔离层。
  8. 【关键点 4】执行时需设置资源配额与超时控制,防止资源耗尽和拒绝服务攻击。
  9. 【关键点 5】沙箱机制主要提供隔离与限制,不能单独保证业务幂等或数据一致性。
  10. 【易错点 1】仅依赖 Docker 默认配置,未限制 capabilities 和用户权限,容器逃逸风险高。
  11. 【易错点 2】忽略资源限制,导致容器消耗过多宿主资源,影响稳定性。
  12. 【易错点 3】将容器隔离等同于虚拟机隔离,误认为绝对安全,而实际共享内核。