随着Docker的崛起,Linux LXC以及其他的容器供应商已经多次提出了云计算容器技术对于企业应用是否具有足够安全性的问题。
当然,这项新技术比传统基于管理处许的虚拟机具有更低的实用性,这主要是因为这项技术本身仍然是相当的不成熟。然而,由于其性能方面的优势是显而易见的,因此业内对于容器技术的安全性并未多做讨论。
什么是云计算容器?
容器技术在很多方面都不同于诸如VMware和VirtualBox这样的技术。
首先,容器通常有一个目的,那就是要托管一个网络服务器或一个数据库。从技术上讲,容器与虚拟机之间的根本区别在于虚拟机模拟虚拟硬件,它需要一个系统管理程序,因此它需要比云计算容器技术更多的磁盘空间和更强大的处理能力。这样一来,云计算容器就成为了受云计算供应商安全性程序垂青的组件。例如,Docker就与所有的主要云计算服务供应商有着一个合作伙伴关系,如亚马逊、微软以及谷歌等。
毫无疑问,容器技术是非常有用的,它能够提供更好的便携性和定制化,同时减少资源消耗和成本支出,但是与其他众多"流行的"技术类似,安全性是阻碍其进一步发展的因素。
云计算容器技术的安全性问题
容器技术的最大问题在于,它们缺少一个像虚拟机所拥有的安全边界。从理论上来说,如果一名黑客能够在底层操作系统中找到一个漏洞,那么他就同样可以利用这个漏洞来获得访问容器的权限。反之的可能性也是理论上存在的,黑客可以找到容器的漏洞,进而利用它来获得访问底层服务器的权限。
更糟糕的是,Docker和其他的容器技术采用了一些可作为“root”超级用户运行的功能(Docker表示,在上个月发布的1.8版本中已经解决了root权限问题)。这个问题可能会对云计算供应商环境带来更大的影响,我们可以想象:所有的云计算服务都通过容器进行部署,而一名黑客能够突破一个容器,并访问相同硬件上的其他容器。对于云计算供应商和云计算用户来说,这个问题都有可能是灾难性的。所以,容器技术的部署需要深思熟虑。
容器的另一个问题是实际的创建过程。例如,如果某一家企业创建了它自己的容器,那么其安全性水平将起决于企业本身的能力;如果工作人员没有很好地开发、保护和管理它,那么容器可能就无法实现其预期效益——也许使用预制的容器可能会更好。但是,需要引起注意的是,如果企业需要从一个存储库中获得一个容器,它可能并不能确切地知道正在下载什么内容;例如,如果容器有一个记录按键操作的技术可将用户名和密码上传至远程服务器,那么会怎么样?
这些安全问题都是较为普遍存在的,因为业界对于容器安全方面的研究还投入不多。此外,对于如何确保其安全性也没有一个明确的指导意见。
简单而言,在业内把容器技术和虚拟机的安全性划上等号之前,还是有很多工作要做的。但是,这项工作已经开始。Docker在2015年八月发布了一个重大的安全更新,其中就包括了名为Docker 内容信任的新功能,这个新功能主要是通过为容器库提供一个基于公共密钥的签名机制来实现容器部署的安全性,从而在一定程度上缓解这一问题。
确保云计算容器安全性的最佳实践
如果某一家企业是从公共库中获取Docker容器的,那么它应当寻找那些由新的Docker内容信任系统签名的Docker容器,以便于确保它下载的是一个合法的容器。其他需要注意的关键点包括:确保禁用不需要的功能、确保只有受信任的用户能够操作控制容器的守护进程。此外,还应启用容器间的防火墙以限制不同容器之间的交互。
当容器技术变得越来越安全时,它们将在大多数企业中占据一席之地。标准部署匹配容器化优势将为业内用户带来便于部署、较低的资源要求以及成本降低等诸多好处。例如,想要部署数据库系统的IT团队能够很容易地获得一个MySQL容器,而这个容器中已经准备好了所有的必备组件,这样就大大缩短了系统部署所需的时间。对于容器技术来说, 最可能的应用场景将是成为虚拟机的配合角色而不是取代它们。在企业部署应用中,这两种技术都有其立足之所。
总之,容器是一个很好的技术,应考虑将其纳入商业应用。配合虚拟机技术,它们能够节省时间和金钱,但是它们的部署却是需要费一番思量的,当然其来源也应是可信的。