一个 Docker blog post表示:
Docker containers are, by default, quite secure; especially if you take care of running your processes inside the containers as non-privileged users (i.e. non root)."
那么,如果我在 docker 下以 root 身份运行,安全问题是什么?我的意思是,如果我以非特权用户的身份处理我的进程是非常安全的,那么,我如何以 root 用户身份在容器中托管?我只是要求它理解它,如果以root身份运行时不安全,如何隔离它?那么哪些系统调用可以暴露主机系统呢?
最佳答案
当您以 root 身份运行时,您可以访问更广泛的内核服务。例如,您可以:
- 操纵网络接口(interface)、路由表、网络过滤规则;
- 创建原始套接字(一般来说,“外来”套接字,执行的代码比旧的 TCP 和 UDP 受到的审查更少);
- 挂载/卸载/重新挂载文件系统;
- 更改文件所有权、权限、扩展属性、覆盖常规权限(即使用稍微不同的代码路径);
- 等等
(有趣的是,所有这些示例都受 capabilities 保护。)
关键是作为root,你可以行使更多的内核代码;如果该代码存在漏洞,您可以以 root 身份触发它,但不能以普通用户身份触发。
此外,如果有人找到了破解容器的方法,如果您以 root 用户身份破解,显然比普通用户造成的伤害要大得多。
关于Docker 以 root 用户身份运行时的安全性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19054029/