跳转至

用户命名空间隔离

用户命名空间隔离(User Namespace Isolation)是 Docker 容器安全机制中的重要组成部分。通过将容器内的用户和组 ID(UID/GID)映射到主机上的非特权用户,用户命名空间隔离能够有效防止容器逃逸和权限提升攻击,从而增强容器的安全性。

用户命名空间隔离的核心作用

  1. 防止权限提升攻击:容器内的 root 用户权限被限制在容器内部,无法直接访问主机资源。
  2. 增强多租户环境的安全性:在共享主机环境中,用户命名空间隔离可以有效防止不同容器之间的权限冲突。
  3. 降低容器逃逸风险:通过隔离用户命名空间,即使容器被攻破,攻击者也无法直接获取主机权限。

命名空间隔离是 Docker 安全机制的核心之一。通过命名空间隔离,Docker 可以将容器与宿主机以及其他容器隔离开来,防止权限提升攻击。

Docker 使用了以下几种命名空间:

  • PID 命名空间:隔离进程 ID。
  • 网络命名空间:隔离网络接口和配置。
  • 挂载命名空间:隔离文件系统挂载点。
  • UTS 命名空间:隔离主机名和域名。
  • IPC 命名空间:隔离进程间通信资源。
  • 用户命名空间:隔离用户和组 ID。

用户命名空间

用户命名空间是 Docker 中用于隔离用户和组 ID 的命名空间。通过启用用户命名空间,可以将容器内的 root 用户映射到宿主机上的非 root 用户,从而限制容器内的 root 权限。

docker run --userns=host my-container

上述命令将禁用用户命名空间,容器内的 root 用户将直接映射到宿主机的 root 用户。