Docker 以 root 用户身份运行时的安全性

标签 security docker

一个 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/

相关文章:

php - 为什么在 PHP 中禁用 E_WARNING 被认为是不好的做法?

postgresql - Docker:Springboot容器无法连接到PostgreSql容器连接错误

java - 如何抑制 ResponseHeader

vb.net - 多少盐安全就是太多盐安全

security - 为系统定义安全策略

wordpress - 更改文件权限在Wordpress dockerfile中不起作用

node.js - 移动 docker-compose.yml 文件时,Nginx 镜像的 docker-compose 不起作用

java - 使用 Spark Java(网络服务器)时从内存中删除敏感数据

laravel - 如何使用缓存加速 Gitlab CI 配置?

linux - 如何在 amd64 主机平台上运行 arm64 docker 镜像