特权容器以及安全隐患的规避

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"
}

猜你喜欢

转载自blog.csdn.net/Demonslzh/article/details/127484455