安全是当前容器生态系统中最重要的话题之一。在过去的一年里,Docker 团队和社区矢志开拓,Docker 团队为平台增加了更多全新的安全功能,并帮助其性能得到进一步的提升。 安全是平台的重中之重随着各大公司越来越多地将其基础架构迁移到私有云和公共云之上,它们开始意识到安全不是一个简单的亡羊补牢问题,相反,安全从一开始就必须严肃对待,并将其整合进平台之中。 令我们倍感欢欣的是,在发布第一本 Docker 安全白皮书和第一套 Docker 1.6 CIS 基准仅一年后,我们的努力通过了行业的有力检验,尤其是近期的新 Docker 1.11 CIS 基准和 Docker 引擎的功能评估,被纳入 NCC 组织(权威代码安全审计机构)的 Linux 容器强化白皮书之中。 “当前时代,我认为没理由不在 Linux 容器,或轻量级沙盒中运行 Linux应用。” —— Aaron Grattafiori,NCC 集团白皮书作者 NCC 集团还横向考察了 LXC 2.0,Docker 1.11 和 CoreOS Rkt 1.3 的安全性能,测试了超过 13 项关键功能,并分析了这些功能在三大平台上的表现。
解读上图 LXC 2.0,Docker 1.11 以及 CoreOS rkt 1.3 的安全对比,我们从以下两个维度入手,第一,安全性强度;第二,设定安全策略的灵活性。 首先,在安全性强度方面,CoreOS rkt 1.3 在多个维度方面暂无法与 LXC 和 Docker 相比,比如用户命名空间(User Namespace), Root 用户的 Capability 限制,cGroup 资源控制的默认配置,以及 Seccomp 系统调用的过滤清单等。当然,CoreOS rkt 1.3 也存在安全方面的亮点,比如最先支持 Hypervisor 的隔离等,而这一点我们只能寄希望于未来的 LXC 和 Docker。 而 Docker 作为最重视安全的容器技术之一,在很多方面都设置了强安全性的默认配置。其中,自然包括:容器 root 用户的 Capability 能力限制,Seccomp 系统调用过滤,Apparmor 的 MAC 访问控制,镜像签名机制等。 安全策略的灵活性,则给予用户选择安全的权利,用户可以按需灵活配置。这方面 Docker 的支持包括:用户命名空间(User Namespace),自定义 Seccomp 系统调用过滤名单,SELinux 的安全访问控制等。 —— 来自 DaoCloud 工程师孙宏亮的深度解读 在过去的一年里,Docker 集中攻克了容器安全的三大核心难题:安全认证(secure access),受信内容(secure content)和安全平台(secure platform)。上方图表中显示了这些隔离和控制功能(既可以内置于 Docker 引擎,也可在引擎外使用)的测试结果。此类功能可以让你完全信任你的初始内容,减少针对 Linux 内核的攻击平面,提高 Docker 引擎的控制性能,并最终帮助你构建(build)、发布(ship)和运行(run)更安全的应用。 Docker 去年在安全功能上的进步,一言以蔽之,尽在以下时间轴。 Docker 1.6
Docker Bench:引入基于 CIS 基准的测试工具 Docker 1.8:Docker 内容信任机制
Docker 1.10
Docker 1.11
默认安全Docker 奉行 “默认安全” 的理念。在实现这些特征时,我们还把设备外的默认配置和策略囊括进来,因此首次安装 Docker 引擎的客户用起来会更安全些,不需要掌握太多安全方面的知识。不过,如果你有不同的需求,改动策略和配置也很容易。 我们会继往开来,为全体 Docker 用户提供更多实用的功能。不过就目前来看,Docker 1.11 版本安全方面的默认策略已经足够强大,还是市面上最安全的容器平台。
Docker 是一个搭建、运输和运行分布式应用的开放平台,而狄奥戈·摩尼卡是这个平台的安全主管。他曾是 Square 中的元老级人物,领导整个平台的安全团队。狄奥戈在本硕博期间都专攻计算机科学,目前在里斯本技术大学任安全研究员。他还在多家网络安全创业公司的顾问团中任职,并兼任电气和电子工程师协会(IEEE)的长期志愿者。 |
|