文章目录
- 1、什么是特权容器
- 2、特权容器相关命令
- 2.1 检查是否是特权容器
- 2.2 启用特权容器
- 3、特权容器的安全隐患
- 4、减少特权容器使用以避免docker容器权限提升
1、什么是特权容器
Docker特权模式授予Docker容器对主机系统上所有设备的根权限。在特权模式下运行一个容器,使其具有主机的能力。例如,它能够修改App Arm和SELinux配置。
通过主机的内核功能和设备访问,你甚至可以在有特权的容器内安装一个新的Docker平台实例。本质上,这种模式允许在Docker内部运行Docker。
2、特权容器相关命令
2.1 检查是否是特权容器
docker inspect --format='{{.HostConfig.Privileged}}' [container_id]
命令返回true或者false来表示当前容器是否为特权容器。
2.2 启用特权容器
当我们想将容器变为特权容器时,只需要在run命令中添加-privileged
选项让容器以特权模式运行即可。
docker run --privileged [image_name]
3、特权容器的安全隐患
就像在Linux系统中我们不建议使用root用户一样。在容器的特权模式下,会将主机的内核和硬件资源暴露给外网。因此,不建议在生产环境中使用特权容器。
通过特权容器可能出现的漏洞,它为恶意用户创造了控制系统的机会。因为在特权模式下,主机允许容器以root权限访问系统中的一切,为网络攻击打开了一个机会之窗。网络攻击者可以通过容器连接到主机,从而进一步对基础设施和配置进行入侵和篡改。最常见的情况是,合法用户滥用给定的权限进行恶意活动。
4、减少特权容器使用以避免docker容器权限提升
和电脑中病毒之后拔网线关电源的原理类似。防止docker的安全隐患,比如,权限提升的最佳方法就是不使用特权容器。
但是,当出现必须使用特权容器的场景时,我们可以将用户的命名空间进行映射,将容器中的root用户映射到主机中权限较低的非root用户上。
前往安装docke配置文件的默认路径:/etc/docker/daemon.json
在json文件中新加入一对键值对,key为userns-rmap
,value为主机上需要映射的用户名,若输入default,则将有系统自动进行用户权限的映射分配
{
"userns-remap": "default"
}