Docker 是开发人员的安全容器化平台。既然它如此安全,为什么不能在没有超级用户权限的情况下运行它?
Docker 是最常用的容器化平台之一,深受软件工程师的喜爱。它带有一个强大的 CLI 工具,用于管理 Docker 容器和其他相关任务。
默认情况下,您需要 root 权限才能在 Linux 上运行任何与 Docker 相关的命令。当然,为了方便起见,您可以更改此设置并在没有 root 权限的情况下运行 Docker 命令,但您应该注意安全隐患。
什么是 Docker 攻击面?
攻击面是恶意用户可以用来进入系统并造成严重破坏的攻击点数量,更像是窗口数量。根据经验,IT 系统应具有最小的攻击面,以降低安全风险。
一般来说,Docker 的攻击面非常小。容器在安全的隔离环境中运行,除非另有规定,否则不会影响主机操作系统。此外,Docker 容器只运行最少的服务,这使得它更安全。
您可以将 Linux 系统配置为在没有 sudo 权限的情况下控制 Docker。这在开发环境中可能很方便,但在生产系统中可能是一个严重的安全漏洞。这就是为什么你永远不应该在没有 sudo 的情况下运行 Docker。
1. 能够控制 Docker 容器
如果没有 sudo 权限,任何有权访问您的系统或服务器的人都可以控制 Docker 的各个方面。他们有权访问您的 Docker 日志文件,并且可以随意或意外地停止和删除容器。您还可能丢失对业务连续性至关重要的关键数据。
如果在生产环境中使用 Docker 容器,停机会导致业务和信任损失。
2. 获得对主机操作系统目录的控制
Docker 卷是一项功能强大的服务,允许您通过将容器数据写入主机操作系统上的指定文件夹来共享和保留容器数据。
在没有 sudo 的情况下运行 Docker 带来的最大威胁之一是系统上的任何人都可以控制主机操作系统的目录,包括根目录。
您所要做的就是运行 Linux Docker 映像,例如 Ubuntu 映像,并使用以下命令将其挂载到根文件夹上:
输出如下:
由于 Linux Docker 容器以 root 用户身份运行,因此本质上意味着您可以访问整个根文件夹。
上述命令将下载并运行最新的 Ubuntu 映像并将其挂载到根目录上。
在 Docker 容器终端上,使用 cd 命令转到 /hostproot 目录:
使用 ls 命令列出此目录的内容将显示容器中现在可用的主机操作系统的所有文件。现在,您可以操作文件,查看机密文件,隐藏和取消隐藏文件,更改权限等。
3. 安装恶意软件
精心制作的 Docker 映像可以在后台运行并操作系统或收集敏感数据。更糟糕的是,恶意用户可能会通过 Docker 容器在您的网络上传播恶意代码。
Docker 容器有几个实际用例,每个应用程序都会带来一组不同的安全威胁。
在 Linux 上保护您的 Docker 容器
Docker是一个强大而安全的平台。在没有 sudo 的情况下运行 Docker 会增加您的攻击面并使您的系统容易受到攻击。在生产环境中,强烈建议您将 sudo 与 Docker 一起使用。
由于系统上有如此多的用户,因此很难为每个用户分配权限。在这种情况下,遵循最佳访问控制实践可以帮助您维护系统的安全性。