在弄清楚如何管理项目的 python 环境时,我正在考虑使用 Docker容器。我开始意识到 Debian wiki像其他在线资源一样警告Docker 组的风险。但我不太确定:
仅在安装 Docker 后创建 Docker 组的可能性本身会带来风险吗?
换句话说,如果我不创建一个组,或者将自己添加到一个组(注意:我是唯一的用户),是否存在安装 Docker 并将其用于管理环境的风险,如他们的博客所建议的那样?
但是在同一个环境中进行多个项目很快就会成为一个问题,因为我们可能会遇到配置或依赖冲突。此外,在与队友共享项目时,我们还需要协调我们的环境。为此,我们必须以易于共享的方式定义我们的项目环境。
一个好的方法是为每个项目创建隔离的开发环境。这可以通过使用容器和 Docker Compose 来管理它们来轻松完成。
风险与组中的用户有关,因为此类用户提供了一条简单的 root 路径,没有进一步的访问控制。Debian 系统上还有其他此类组,例如
disks
,因此安装 Docker 并创建docker
组本身并不会增加风险。如果您不将用户添加到此类组,那也没关系,因为无论如何,将用户添加到组都是特权操作(因此,如果攻击者可以这样做,您就已经输了)。运行特权守护进程也存在一定的风险。您可以研究其他解决方案,这些解决方案根本不涉及运行特权 Docker 守护进程;例如Podman,或者因为您正在专门针对 Python 项目研究这个,Python 虚拟环境。
在我看来,Docker 或 LXD/LXC 等容器系统/服务或亚马逊弹性容器服务 (EC2)、Amazon Elastic Container Service for Kubernetes、Microsoft Azure Kubernetes Service 和 Google Kubernetes Engine (GKE) 等云服务是最佳解决方案对于一般的软件开发,因为您可以将所有部分划分为微服务,分别测试、使用和共享它们,并使用巧妙的策略来摆脱单体系统。
容器系统是开发软件的最佳选择,因为我可以快速轻松地设置和启动某些开发环境或系统,测试和试用它们,并且资源的使用和管理比虚拟机或单体系统更好。
在我看来,我的软件项目至少应该有3个独立的系统,比如我的开发环境,我的测试环境和我的生产环境,如果这些在物理上和逻辑上是分开的最好(现在对于非常小的没有意义项目在物理上和逻辑上完全分开)。
没有什么是安全的,不仅 docker 的配置在这里起作用,而且整个系统本身的配置也起作用。
我的操作系统是如何配置的,上面运行着哪些其他软件,我的网络是如何设置防火墙的,我是如何共享和使用我的组和数据的,等等。
你可以看到,你不能用一个答案来回答所有这些问题,而且有很多事情需要考虑
无论如何,工作和熟悉像 docker 这样的容器服务对你来说是一种收获
安装 Docker 本身本身并没有风险,了解与创建 Docker 组相关的潜在风险很重要。
Docker 组允许用户在没有 root 权限的情况下运行 Docker 容器,这既方便又能提高安全性。
如果管理不当,Docker 组也可能会产生安全漏洞,或者如果用户在没有适当的身份验证和授权的情况下被添加到组中,该用户可能能够运行任意 Docker 容器,从而可能导致数据泄露、恶意软件感染和其他安全事件。
确保以安全的方式创建和管理 Docker 组,例如:
https://security.stackexchange.com/questions/178542/is-adding-docker-group-not-a-good-idea
码头工人安全