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