Docker作为root用户运行时的安全性

时间:2013-09-27 15:02:47

标签: security docker

Docker blog post表示:

  

默认情况下,Docker容器非常安全;特别是如果你   负责在容器内运行您的进程   非特权用户(即非root用户)。“

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

2 个答案:

答案 0 :(得分:16)

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

  • 操纵网络接口,路由表,netfilter规则;
  • 创建原始套接字(一般来说,“异国情调”套接字,执行的代码比旧的TCP和UDP接受更少的审查);
  • mount / unmount / remount filesystems;
  • 更改文件所有权,权限,扩展属性,覆盖常规权限(即使用略有不同的代码路径);

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

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

此外,如果有人找到了打破容器的方法,如果你以root用户身份突破,显然可以比普通用户造成更大的伤害。

答案 1 :(得分:5)

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

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