24

Docker博客文章指出:

默认情况下,Docker 容器非常安全。尤其是当您以非特权用户(即非 root)的身份在容器内运行进程时。”

那么,如果我在 docker 下以 root 身份运行,安全问题是什么?我的意思是,如果我以非特权用户的身份处理我的进程是非常安全的,那么,以 root 用户身份托管在容器中怎么会有害呢?我只是要求它理解它,如果以root身份运行时不安全,如何隔离它?那么哪些系统调用可以暴露主机系统呢?

4

2 回答 2

21

当您以 root 身份运行时,您可以访问更广泛的内核服务。例如,您可以:

  • 操作网络接口、路由表、网络过滤规则;
  • 创建原始套接字(一般来说,“异国情调”的套接字,执行的代码比旧的 TCP 和 UDP 受到的审查更少);
  • 挂载/卸载/重新挂载文件系统;
  • 更改文件所有权、权限、扩展属性、覆盖常规权限(即使用稍微不同的代码路径);
  • 等等

(有趣的是,所有这些示例都受功能保护。)

关键是作为root,可以行使更多的内核代码;如果该代码中存在漏洞,您可以以 root 身份触发它,但不能以普通用户身份触发。

此外,如果有人找到破解容器的方法,如果您以 root 用户身份破解,那么您显然会比普通用户造成更大的伤害。

于 2013-09-27T17:22:02.140 回答
6

您可以通过在 docker 上回显来重新启动主机/proc/sysrq-trigger。在 docker 中以 root 身份运行的进程可以执行此操作。

这似乎是一个很好的理由不在 docker 中以 root 身份运行进程;)

于 2014-06-18T16:03:38.197 回答