DOCKER

08 Docker 容器安全

2021-01-10  本文已影响0人  托瓦斯克一

容器与虚拟机区别

由下图可见,虚拟机是通过管理系统(Hypervisor)模拟出 CPU、内存、网络等硬件,然后在这些模拟的硬件上创建客户内核和操作系统。这样做的好处就是虚拟机有自己的内核和操作系统,并且硬件都是通过虚拟机管理系统模拟出来的,用户程序无法直接使用到主机的操作系统和硬件资源,因此虚拟机也对隔离性和安全性有着更好的保证。

而 Docker 容器则是通过 Linux 内核的 Namespace 技术实现了文件系统、进程、设备以及网络的隔离,然后再通过 Cgroups 对 CPU、内存等资源进行限制,最终实现了容器之间相互不受影响,由于容器的隔离性仅仅依靠内核来提供,因此容器的隔离性也远弱于虚拟机。

虚拟机与容器比较

为啥还用容器

既然虚拟机安全性这么好,为什么我们还要用容器呢?其实两者各有利弊,只是在业务快速开发与迭代的今天,容器秒级启动、性能损耗小,镜像占用小等特性更加匹配当今主流的业务场景。


容器存在的安全问题

● 基础软件漏洞:由于容器需要安装基础的软件包,如果软件包存在漏洞,则可能会被不法分子利用并且侵入容器,影响其他容器或主机安全。
● 镜像仓库漏洞:无论是 Docker 官方的镜像仓库还是私有镜像仓库,都有可能被攻击和篡改镜像,当我们使用镜像时,就可能成为攻击者的目标对象。
● 用户程序漏洞:用户自己构建的软件包可能存在漏洞或者被植入恶意脚本,这样会导致运行时提权影响其他容器或主机安全。

解决容器安全问题

● SELinux:是 Linux 的一个内核安全模块,提供了安全访问的策略机制,通过设置 SELinux 策略可以实现某些进程允许访问某些文件。
● AppArmor:类似于 SELinux,也是一个 Linux 的内核安全模块,普通的访问控制仅能控制到用户的访问权限,而 AppArmor 可以控制到用户程序的访问权限。
● GRSecurity:是一个对内核的安全扩展,可通过智能访问控制,提供内存破坏防御,文件系统增强等多种防御形式。
--cpus:限制 CPU 配额
--memory:限制内存配额
--pids-limit:限制容器的 PID 个数

### 举例:
$ docker run -it --cpus=1 --memory=2048m --pids-limit=1000 busybox sh
普通容器与安全容器对比
上一篇 下一篇

猜你喜欢

热点阅读