Docker 守护程序和客户端/CLI 在单独的盒子上的场景?



将 Docker客户端或 CLI 和 Docker 守护程序保留在单独的机器上有哪些用例?

为什么要把两者分开?

切勿将两者分开运行。 唯一的例外是管理非常严格的docker-machine设置,您确信 Docker 已经设置了所有必需的安全控制。 即便如此,我也只会在必要时将其用于本地 VM(作为 Docker 工具箱的一部分;以演示 Swarm 设置(,并使用更多专用工具来配置云资源。

请考虑以下 Docker 命令:

docker run --rm -v /:/host busybox vi /host/etc/shadow

任何可以运行此命令的人都可以将任何主机用户的密码更改为他们选择的任何密码,并轻松接管整个系统。 可能有更直接的方法可以根主机。 运行此命令的唯一要求是您具有访问 Docker 套接字的访问权限和权限。

这意味着:任何可以访问 Docker 套接字的人都可以简单地对主机进行根。如果它是网络可访问的,则任何可以访问系统上端口 2375 的人都可以接管它。

这不是一个可接受的安全位置,因为不需要ssh到远程服务器来运行docker命令的温和便利。 各种常见的系统自动化工具(Ansible,Chef,Salt Stack(都可以根据需要调用Docker,并且使用这些工具之一几乎肯定比尝试为Docker配置TLS更可取。

如果您遇到教程或其他设置,建议您使用-H选项启动 Docker 守护程序以通过网络(甚至只是发布到本地系统(,请注意这是一个巨大的安全漏洞,相当于禁用您的 root 密码。

(我在上面暗示,可以在网络套接字上使用TLS加密。 这是一个棘手的设置,它涉及围绕对主机具有根等效权限的 TLS 客户端证书进行共享。 我不建议尝试;ssh到目标系统或使用自动化工具来管理它。

最新更新