Docker对企业云安全产生的影响是怎样的?
如果你是应用开发人员或者虚拟环境的系统管理员,在过去一年左右的时间,你肯定听到了不少关于Docker的消息。这个针对Linux应用容器虚拟化的平台现在非常“火爆”,Docker为开发团队带来的灵活性以及给数据中心带来的性能优势可能带来革命性变化。
但是,安全专业人员可能不太熟悉Docker。很多人可能还没有听说过Docker,而对于知道Docker的人,他们可能想要了解这个工具的安全性,他们会问:Docker会如何改变我们的安全配置?随着Docker使用变得更加普遍,我们应该应该考虑什么问题?我们现有的安全机制是否适合Docker环境?
在本文中,我们将深入探讨Docker,什么是Docker、它为什么如此受欢迎以及一些安全方面的问题。
如果你是安全专业人员,你需要了解Docker,首先因为考虑到其流行程度,你会想知道在短期内如何保护它。其次,Docker很重要,因为它可能最终提供一些长期的安全优势(这取决于你如何利用它)。下面让我们看看Docker及其对企业安全的影响。
什么是Docker?
简而言之,Docker是基于Linux的开源应用容器抽象化和虚拟化机制。虽然“基于Linux的开源”很好理解,但“应用容器抽象化”可能让人困惑。开始你可能会觉得它很复杂,但这个概念本身其实很简单。从本质上讲,Docker可以帮助创建独立虚拟环境(即容器),在这个环境中应用可以“做自己的事情”。这个虚拟容器为应用提供了对底层操作系统的自己的半私人化(和隔离的)“视图”,包括存储、网络、流程等资源。在很多方面,这在概念上类似于OS虚拟化。然而,想一想虚拟OS镜像中应用不关心或专门使用的“开销”。例如,对于运行相同LAMP堆栈的两个Web应用,这个底层堆栈在这两个应用之间有多少差异?从整体OS安装的百分比来看,并不是那么多,对吗?仅虚拟化应用(例如使用Docker Engine)让虚拟或物理OS实例隔离应用,这反过来又允许创建更轻更小的应用程序包,仅包含它们运行所需要的东西。
开发人员发现这个概念很强大,因为这可以为他们的应用带来更便携更容易定制的容器,这意味着他们只需花更少的时间来定制OS环境,同时有更多的时间来开发应用功能。数据中心团队也发现这个概念的价值,因为它可以实现更有效的资源利用,从而实现数据中心更高的分配密度(例如更多的应用和更少的资源来支持它们)。
Docker安全性如何?
从安全的角度来看,应用虚拟化听起来很吸引人。有些安全专家可能会认为这是利用chroot来沙箱化文件系统的概念的延伸--或者作为FreeBSD下“jail”的直接模拟,这两种都是隔离底层系统与单个应用的方法。虽然从这个角度来看有一些优势,但也有一些不同之处需要注意,安全专家在评估Docker安全以及围绕其构建控制时也应该注意这些问题。首先,直到最近才出现自动验证官方Docker镜像完整性的方法。官方镜像包含支持应用运行的核心实用程序和软件。这可能是官方版本的Linux基本镜像、中间件组件(例如MySQL或postgreSQL)或前端组件(例如Apache或WordPress)。
10月发布的1.3版本带来的变化是支持自动化数字签名验证,以便这些官方镜像的用户可以确保镜像在下载前没有被篡改。因为这个功能,篡改官方镜像在长期来看不再是问题。然而,由于可能还是会存在一些1.3版本前的部署,你应该做的事情(针对1.3版本前的部署)是提供你下载的镜像,并安装一些额外的审查。
毫无疑问,解决1.3版本前的安装是一个好主意。与任何软件一样,Docker引擎本身可能存在漏洞。例如,最新的1.3.2更新解决了一些明显的安全问题--破坏容器之间的分隔,有个漏洞允许镜像放松安全限制,另一个漏洞允许任意文件系统写入(由此执行代码)。这些问题应该作为很好的例子来说明,为什么确保安全性和保持软件更新那么重要。
第二个需要记住的是,应用容器不一定会执行与管理程序在“切片”之间实现的相同水平的隔离。管理程序已经做了相当多的工作来确保应用相互隔离,其指导方针是,“传统虚拟化技术(Xen、VMware、KVM等部署的技术)被认为比容器更安全,因为它们提供额外水平的隔离。容器可以发出系统调用到主机内核,而完整的虚拟机只能发出管理程序调用到主机虚拟机管理程序,这一般会产生更小的攻击面。”
这个指导可以并且应该影响你企业的使用情况。在短期内你要谨慎考虑你对该隔离机制的信任度。例如,如果你在评估多租户情况,其中你对应用旁边运行的程序只有有限或更少的控制(例如在公共云的情况),你可能需要谨慎选择放到这个环境的应用。这样的用例可能适合低敏感度的应用,你可能不会考虑转移HR或总账系统到这样的环境。
安全优势体现在?
就实用性而言,如果应用得当,使用应用容器可能带来安全优势。首先,从管理的角度来看可以带来优势,这可以帮助降低复杂性。降低复杂性本身又可以帮助提高安全性。例如,与在多个不同虚拟OS实例应用相同的控制相比,为使用应用容器的单个平台添加安全机制、系统更新或硬化技术要更加简单。
其次,虽然现在应用容器可能无法执行与管理程序相同水平的隔离,但它提供更好的保护,因为在“库存”Web服务器,一个应用的感染可能意味着整个系统的感染。
从安全的角度来看,有些事情非常重要而需要慎重对待,但同时也有一些优势。根据你使用的情况,Docker可以成为你的安全工具包中的重要组成部分,这绝对是值得你关注的工具。