史上最全 Docker 安全问题回顾

安全是当前容器生态系统中最重要的话题之一。在过去的一年里,Docker 团队和社区矢志开拓,Docker 团队为平台增加了更多全新的安全功能,并帮助其性能得到进一步的提升。

0510_Daoship+Lock_900

安全是平台的重中之重

随着各大公司越来越多地将其基础架构迁移到私有云和公共云之上,它们开始意识到安全不是一个简单的亡羊补牢问题,相反,安全从一开始就必须严肃对待,并将其整合进平台之中。

令我们倍感欢欣的是,在发布第一本 Docker 安全白皮书和第一套 Docker 1.6 CIS 基准仅一年后,我们的努力通过了行业的有力检验,尤其是近期的新 Docker 1.11 CIS 基准和 Docker 引擎的功能评估,被纳入 NCC 组织(权威代码安全审计机构)的 Linux 容器强化白皮书之中。

“当前时代,我认为没理由不在 Linux 容器,或轻量级沙盒中运行 Linux应用。”

—— Aaron Grattafiori,美国安全咨询公司 iSec Partner 安全研究员,NCC 集团白皮书作者

NCC 集团还横向考察了 LXC 2.0,Docker 1.11 和 CoreOS Rkt 1.3 的安全性能,测试了超过 13 项关键功能,并分析了这些功能在三大平台上的表现。

47979eee-97c8-4ce3-a6ac-5a43897771c2-1024x594

(来源:“Understanding and Hardening Linux Containers”, 96 页)

解读上图 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 image(Andy Goldstein)
  • Docker Daemon层的ulimit配置

Docker Bench:引入基于CIS基准的测试工具

Docker 1.8:Docker内容信任机制

  • 通过UTF(The Update Framework)实现镜像签名机制和镜像验证机制
  • Docker Hub提供的官方认证的镜像

Docker 1.10

  • 用户命名空间(user namespace)(Phil Estes)
  • 带默认白名单的Seccomp参数文件(Jessie Frazelle)
  • 授权插件模式(Dima Stoppel, Liron Levin)
  • 内容可寻址的镜像层储存

Docker 1.11

  • Docker内容信任机制与硬件的整合
  • Docker内容信任机制与密钥授权支持的整合
  • PID cgroup的支持,完成容器进程数量的限制(Aleksa Sarai)

默认安全

Docker 奉行 “默认安全” 的理念。在实现这些特征时,我们还把设备外的默认配置和策略囊括进来,因此首次安装 Docker 引擎的客户用起来会更安全些,不需要掌握太多安全方面的知识。不过,如果你有不同的需求,改动策略和配置也很容易。

我们会继往开来,为全体 Docker 用户提供更多实用的功能。不过就目前来看,Docker 1.11 版本安全方面的默认策略已经足够强大,还是市面上最安全的容器平台。

作者|Diogo Mónica(狄奥戈·摩尼卡)

Diogo_Monica_Docker_hoodie_Round-1-291x300

Docker 是一个搭建、运输和运行分布式应用的开放平台,而狄奥戈·摩尼卡是这个平台的安全主管。他曾是 Square 中的元老级人物,领导整个平台的安全团队。狄奥戈在本硕博期间都专攻计算机科学,目前在里斯本技术大学任安全研究员。他还在多家网络安全创业公司的顾问团中任职,并兼任电气和电子工程师协会(IEEE)的长期志愿者。

Leave a Reply

Your email address will not be published. Required fields are marked *