文章目录

  • 1、什么是特权容器
  • 2、特权容器相关命令
  • 2.1 检查是否是特权容器
  • 2.2 启用特权容器
  • 3、特权容器的安全隐患
  • 4、减少特权容器使用以避免docker容器权限提升


1、什么是特权容器

Docker特权模式授予Docker容器对主机系统上所有设备的根权限。在特权模式下运行一个容器,使其具有主机的能力。例如,它能够修改App Arm和SELinux配置。

通过主机的内核功能和设备访问,你甚至可以在有特权的容器内安装一个新的Docker平台实例。本质上,这种模式允许在Docker内部运行Docker。

docker run 容器命令 docker run --privileged_docker run 容器命令

2、特权容器相关命令

2.1 检查是否是特权容器
docker inspect --format='{{.HostConfig.Privileged}}' [container_id]

docker run 容器命令 docker run --privileged_容器_02


命令返回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"
}