我原以为这个问题之前已经有人问过了,但是我在谷歌上搜索了很多次却找不到一个简单的答案,所以如果这个问题已经得到回答的话我很抱歉。
本质上,我计划提供一项服务,允许用户在我的 docker 主机上运行 docker 容器。用户可以选择我提供的容器之一,也可以提供他们自己的容器(未经审核)。他们还可以在容器内运行他们选择的 bash 命令。我需要限制他们只能在容器内运行代码,而不能访问主机或任何其他同时运行的容器。容器应该被允许完全访问互联网,主机需要与容器共享一个目录。我最初会向 docker 容器提供一些数据文件,一旦容器完成了用户想要的操作,我就需要在那时再次访问这些数据文件。
从安全角度来看我需要注意什么?谢谢你的帮助。
答案1
Docker 中运行容器的默认 CLI 应该是安全的,不受容器命令上下文的限制,并且不能在主机上执行容器之外的任何操作。
您需要注意传递给该命令的任何选项。如果用户可以访问 docker CLI 本身,他们可以控制主机(例如,docker run -v /:/target debian /bin/bash
将授予 root shell 访问 /target 处的主机文件系统的权限,他们可以在其中修改 /etc/passwd 或计算机上的任何其他文件)。
容器默认无法阻止的唯一事情是 DoS 攻击,容器可能会对您的服务器进行分叉轰炸。为此,您需要查看可以作为运行命令的一部分添加的内存和 CPU 限制。