使用Docker容器的核心是Docker服务端。Docker服务的运行目前还需要root权限的支持,因此服务端的安全性十分重要。
首先,必须确保只有可信的用户才可以访问到Docker服务。
Docker允许用户在主机进而容器之间共享文件,同时不需要限制用户的访问权限,这就容易让容器突破资源限制。
例如,如果恶意用户启动容器的时候让主机的/目录映射到容器的目录下,那么容器就可以对主机的文件系统进行更改。
事实上,几乎所有的虚拟化系统都允许此类的文件共享,而没法阻止恶意用户将根文件系统挂载到虚拟机服务的事件。
这将会造成很严重的安全后果。因此,当提供容器创建服务时,要注意参数的安全检查。
为了加强对服务端的保护,Docker的REST API在0.5.2之后使用本地的Unix套接字替代原先绑定在127.0.0.1上的TCP套接字。
因为后者容器造成跨站脚本攻击,现在用户使用Unix权限检查来加强套接字的访问安全。
最近改进的Linux命名空间机制将可以实现使用非root用户来运行全功能的容器,
这将彻底解决共享文件系统所带来的安全问题。
目前Docker自身改进安全防护的目标是实现以下两个重要安全特性:
将容器的root用户映射到本地主机的非root用户,减轻容器和主机之间因权限提升而引起的安全问题。
允许Docker服务器在非root权限下运行,利用安全可靠的子进程来代理执行需要特权权限的操作。
这些子进程将只允许在限定范围内进行操作。
5.第三方检测工具
(1)Docker Bench
Docker Bench是一个开源项目。
该项目按照互联网安全中心(Center for Internet Security,CIS)对于Docker 1.11+的安全规范进行的一系列环境检查,
发现当前Docker部署在配置、安全等方面的潜在问题。
CIS Docker规范在包括主机配置、Docker引擎、配置文件权限、镜像管理、容器运行时环境、安全项等六个方面进行了相关的约束和规定。
Docker Bench自身也提供了Docker镜像。
(2)clair
CoreOS团队推出的clair支持对容器的文件层进行扫面而发现潜在漏洞。