Docker的安全基准
Docker公司与Center for Internet Security ( CIS )合作,制作了一份 基准文档 [pdf],包含很多针对部署Docker的安全性的建议。Diogo Mónica在一篇博客“ 理解Docker的安全性和最佳实践 ”中公布了该基准,她和Nathan McCauley一起最近受雇来领导 Docker的安全团队 。该团队也发布了“ 容器安全性入门 ”[pdf]白皮书。
基准文档涵盖了运行Docker的宿主(系统)的配置、Docker本身的配置,以及在Docker管理下运行的容器的配置。该基准针对 Docker 1.6.0,(这是)本文写作时的最新版本,并且基于(使用)红帽企业Linux(RHEL)第7版或Debian第8版作为宿主操作系统(OS)。基准 的附录中有包含每项建议的检查清单。
建 议分为两个级别,第一级涉及的措施“实用而谨慎,提供明确的安全方面的好处,而又不妨碍运用的技术超出可接受的范围。”第二级的建议更加具有侵入性,被描 述为“针对把安全性视为头等大事的环境或情况,作为深入全面的防御措施,或者会消极地抑制技术的运用或性能。”第一级的建议适用于宿主操作系统和 Docker,而第二级的3项关于强制访问控制(mandatory access control,MAC)和端点保护平台(endpoint protection platform,EPP)的建议,只适用于Docker。
很多建议在其审核一节有脚本片段,可以用来判断配置是否 处于所需的状态,这表明,大部分基准可以组织成脚本,用来检查(及重新配置)宿主是否符合基准。补救措施在适当的情况下也用脚本片段描述,但是这些脚本不 太有用,因为在大多数情况下,必须编辑启动配置。鉴于所有主要的Linux发行版本现在都切换到systemd作为其默认的启动系统,CIS可能会选择显 示与此相应的配置步骤,但这也有可能会造成许多仍在旧发行版本上运行Docker的用户的困惑。
尽管有些建议是相当通用的,比如“不要在生 产环境使用开发工具”,大多数建议还是很具体和可操作的,比如“不要使用aufs”。因此该基准可以用来剖析某一Docker环境,决定可以采取以提高其 安全性的实际步骤。当由于底层宿主操作系统的不同而存在多种选择时,就会给出由Docker核心团队和其他人撰写的很多外部指导性文档。
一些可能以前被认为是容器的最佳实践,比如,“一个容器只包含一个进程”,以及,“不要在容器内运行SSH”,在基准中作为安全性的建议。把这认为是安全性的问题,将有可能进一步削弱把容器作为小型虚拟机的使用模式。
基准中有一些特别之处希望能在将来的版本中解决。其中之一是在Docker将来的版本中对用户命名空间的支持,表明这有可能出现在1.6版本中(即使该基准就是关于1.6版本的)。这也许说明用户命名空间的整合的确要比预想的更成问题。基准还建议使用 nsenter ,尽管其使用已经在很大程度上被Docker 1.3引入的‘exec’命令所取代。
伴 随基准推出的白皮书表明,Docker公司正努力把容器定位为改进安全性的方法,但就象任何新技术一样,公司面临艰难的时刻说服对安全性有顾虑的客户,在 生产环境运行是安全的。CIS基准的发布为那些想在生产环境运行Docker的(用户)提供了可测量的手段来评估其安全状况,这很可能有助于缓解任何顾 虑。对于拥抱Docker来打包应用程序、加速持续交付管道、以及促进微服务架构的开发者,这应当使(部署)到生产环境中的最后步骤在一定程度上更加容 易。
查看英文原文: Docker Security Benchmark