Docker之用户隔离
Docker用户隔离说明Docker的使用默认需要sudo权限,或者将需要使用docker的用户拉入docker组当中。使用Docker镜像时,一般默认以root用户进入镜像,由于Docker共享内核的特性,此时容器的root用户与主机的root用户相同,将带来主机安全问题。(如Docker 允许用户在主机和容器间共享文件夹,同时不需要限制容器的访问权限,这就容易让容器突破资源限制。例如,恶意用户
Docker用户隔离
说明
Docker的使用默认需要sudo权限,或者将需要使用docker的用户拉入docker组当中。
使用Docker镜像时,一般默认以root用户进入镜像,由于Docker共享内核的特性,此时容器的root用户与主机的root用户相同,将带来主机安全问题。(如Docker 允许用户在主机和容器间共享文件夹,同时不需要限制容器的访问权限,这就容易让容器突破资源限制。例如,恶意用户启动容器的时候将主机的根目录/映射到容器的 /host 目录中,那么容器理论上就可以对主机的文件系统进行任意修改了。)
而借助Linux的User namespace可以将容器的 root 用户映射到本地主机上的非 root 用户,减轻容器和主机之间因权限提升而引起的安全问题。
此处仅记录解决该问题的方法,详细说明请见:
理解Docker容器中的uid和gid.
Linux Namespace.
隔离docker容器中的用户.
隔离方法
让 docker 创建默认的用户用于 user namespace。
创建/etc/docker/daemon.json
$ sudo touch /etc/docker/daemon.json
然后编辑其内容如下(如果该文件已经存在,仅添加下面的配置项即可),并重启 docker 服务:
{
"userns-remap": "default"
}
$ sudo systemctl restart docker.service
可以通过id命令看到docker新建了一个名为dockremap的用户
$ id dockremap
接着尝试运行docker
$ docker run --rm ubuntu:18.04 top
显示为root用户
在另一终端下
ps -aux|grep top
可以看到运行top的已经非root而是2197152用户,隔离成功。
更多推荐
所有评论(0)