最high容器技术Docker安全机制大剖析
2016-12-26 12:07:33 | 来源:ithome | 投稿:梁子 | 编辑:dations

原标题:最high容器技术Docker安全机制大剖析

Docker Swarm核心维护者孙宏亮表示,Docker并不为安全而生,其价值并非与虚拟机器一拼安全性,而是以满足资源及流程标準化、易用性,以及表现极好效能的前提,将安全性提升到最好。

图片来源:

iThome

「各位在使用Docker的时候,是否有了解它是否安全?」着有《Docker源码分析》,现任职于中国容器云平台服务商DaoCloud,同时也是Docker Swarm核心维护者的孙宏亮表示,在Docker问世之后,许多传统虚拟化技术的拥护者纷纷开始议论它的安全性,例如共享作业系统核心,一旦单台机器收到外部攻击,伤害範围也会波及至作业系统核心上运作的Container。

诚然,传统VM厂商对Container的安全顾虑有其理由,而在Docker官方宣称其容器技术是绝对安全(Secure by default)的同时,孙宏亮却抛出了一个令人玩味,表面看似相当矛盾的解读:「Docker既安全,也不安全。」

究竟为何他会给出这样暧昧不清的解读,必须先从Docker Container技术的本质作为切入点开始探讨:在任何环境,建置、派送及运行任何应用程式。

在常见的企业级IT架构中,最基本的结构,从底层的伺服器,到最上层的应用程式,中间总共包含了5层大架构。最下层是由Intel x86或是IBM Power组成的实体机器,在这些裸机之上,企业则导入vSphere、KVM、Hyper-V或是Xen等传统虚拟化技术。利用VM技术,企业则可在虚拟机中运作Linux、Windows等异质作业系统。

第四层则是让系统软体与应用程式相互连线的中介软体,最后才是开发团队每天接触的应用程式,「单是支撑一支应用程式运作,底层就得需要如此多的元件在支援。」

Docker可消弭开发、维运团队间的鸿沟

对于开发者,每日首要目的就是关心应用程式。但是,底层的伺服器、虚拟化平台、中介软体等都是由维运团队在支撑。但是仍然不免因为业务上冲突,导致团队工作不顺利。孙宏亮举例,像是开发者往往宣称程式可以在开发环境的机器上运行,但是交付到测试人员手中时就漏洞百出,甚至到了部署阶段,维运人员更是不停抱怨部署失败率极高。

虽然孙宏亮一直提倡开发团队与维运团队得要好好携手合作的观念,但经常事与愿违,「但是在Docker诞生之后,我认为此事的契机到了。」例如任何企业在交付软体的过程中,势必得要经过开发、测试及上限部署、维运等过程。利用Docker推出软体封装标準的概念,除了各部门能够友好相处外,也能让交付应用程式的过程更顺利。

然而,开发者在享受Docker快速部署、建置特点,常常被它的易用性所蒙蔽,进而忽略背后隐含的资安问题。孙宏亮表示,在中国开发圈内经常流传着一句话:「资安永远是IT架构的遮羞布。」当企业关注资安议题时,其重要性不在话下,反之,当企业轻忽了必要的资安问题,就得为捅出的篓子付出巨大成本。

Docker并非为安全而生

Docker这样技术具备具有许多优点,Docker问世后,其官方一直所坚守的立场:在任何环境,建置、派送及运行任何应用程式。虽然Docker社群也不停加强此技术的安全性,但是对于资安议题的考量,其实不是Docker的初衷,「Docker并不为安全而生」,孙宏亮表示,其价值并非与虚拟机器一拼安全性,而是建立起资源及流程标準化、易用性,以及表现极好的效能,「在满足这些前提之下,把安全性做到最好。」

孙宏亮表示,任何新兴技术在进入企业级市场时,都会检视确定其是否满足资安需求,「一旦有安全疑虑,根本无法进入企业级市场。」

Docker有哪些安全性疑虑?

目前使用者对于Docker安全性的检讨不再少数,其中最为明显的质疑是与host主机共用作业系统可能引起的资安问题,再者是Docker为了提高效能表现,进而降低安全性。想要拉高企业採纳容器虚拟化的比例,Docker也得加强其容器技术的安全性。

孙宏亮认为,Docker安全发展总共可归纳为四大面向,第一是资料通讯安全,包含客户端至Docker引擎,以及Docker引擎至储存库间传输映像档的安全考量。第二则是映像档本身的安全性,透过缩小尺寸提升其安全性。

再者是Docker Container的安全,孙宏亮企业业务系统都挂载于映像档,但是仍然是透过Container交付服务,「如果容器出现问题,整个企业就无法正常运作。」

最后则是网路安全,他解释,许多企业在使用Docker前,就已经对于内部资料中心网路架构有所规画,如果选择导入Docker,其架构势必得要进行调整,「这时网路安全就变成重要议题。」

孙宏亮也观察,在中国与Docker相关的新创公司都会建立自家的公共容器映像档储存库,而不法人士只要能取得上传、下载映像档权限,便可以暗自修改组成映像档地各层Layer,「污染储存库中全部的映像档。」但为何Docker会引发如此资安疑虑,是这门技术注定无法迴避的缺陷吗?「是因为大家使用Docker缺乏好的规範,才会导致如此多问题。」他说。

利用Linux Kernel机制,加强Docker安全性

一夕红遍全球IT界的Docker,走出一条与VM不同的路。不过孙宏亮强调,虽然Docker是理念的创新,「但真正厉害的还是Linux Kernel,Docker借助了许多Linux内建的机制」,例如隔离机制nampspace及cgroup,还有拆分root权限的Capabilities等。

Docker借用了cgroup、namespace实现了资源及程序隔离,孙宏亮比喻,一般人生活在社会中都得保有一定程度的隐私,但突然碰上有心人士的探查,隐私权就会受到侵犯,「而在Linux的世界中,namespace就可以保护各别Container的隐私,防止被人探查。」

而cgroup则是控制系统所使用的资源分配,像是储存、CPU、硬碟I/O,以及设备权限,「cgroup分配资源的机制为上限分配。」

他解释,假设系统所有可用的资源数量为X,只要各应用程式索求的资源数目总和不超过X,此时系统资源的分配就不存在问题,「在涉及资源划分时,也要有一个控制器,确保机器上的资源应用正常。」

在开发软体的流程中,开发者往往宣称程式往往可以在开发环境的机器上运行,但是交付到测试人员手中时就漏洞百出,甚至到了部署阶段,维运人员更是不停抱怨部署失败率极高。图片来源/孙宏亮

需要更细緻的权限控管,可以用Capabilities拆分root权限

再者,在Linux Kernel中内建的安全机制Capabilities则用于拆分root权限,「权限很重要,一旦越级会非常严重。」在Linux中,root握有最大的系统执行权限,若遇到Container使用root权限来执行时,将可能发生许多危险,此时就可以利用Capabilities机制,将root权限进行拆分。

孙宏亮举例,假设原本root权限可以执行50项程序,在重新划分后,可执行事务只剩20项,「此时root的安全性就提高。」但是使用Capabilities机制也会替使用者带来不便,孙宏亮表示,由于Linux Kernel将root权限进一步细分,「这时候就会造成Container内root权限受到限制。」

他表示,理想状况下,容器内的root权限得跟host主机上root权限相等,并且不为使用者带来使用上的不便,「这就是使用者命名空间的任务,让Container拥有很大的执行权限,但是不受host主机产生影响。」

最后则是Linux Kernel内建的安全运算模式(Secure Computing Mode,Seccomp),Docker借助此机制,协助Docker Container与Linux Kernel沟通,「使用者利用系统呼叫,透过作业系统核心满足其需求。」不过,

孙宏亮认为,一旦某个Container可以任意呼叫Linux Kernel也会存在许多危险,例如,透过Container呼叫Kernel,要求重新启动系统,或是在Linux Kernel内任意插入新模组,「都相当危险。」

而Container所诞生的目的,本身就非要如VM般一样运作基础架构,「而是要如应用程式一样,负责运行上层服务,「因此就必须利用Seccomp机制,禁止不需要的系统呼叫权限。」

企业拥抱Docker也得留意安全问题

透过这些机制,使用Docker仍然可以获得一定程度的保障,「本可避免很多资安问题,但使用者却自己暴露出漏洞。」孙宏亮认为,许多人认为Docker不安全,其实追本溯源,都可发现是出自于人为因素,「使用者没有重视安全议题。」

共用作业系统核心的确是Docker目前不安全的弱点,但是在Docker逐渐加强资安的同时,Linux Kernel也不停在进步,「两者一同发展,所拥有的优势相当多。」

孙宏亮也直言,企业想要使用Docker,仍然是存在一定门槛。操作妥善,资安并不会让使用者头痛,「但是使用不当,一旦内部资料被偷光,使用者可能还浑然不查。」

在开发软体的流程中,开发者往往宣称程式往往可以在开发环境的机器上运行,但是交付到测试人员手中时就漏洞百出,甚至到了部署阶段,维运人员更是不停抱怨部署失败率极高。图片来源/孙宏亮

tags:容器   剖析   机制   技术

上一篇  下一篇

相关:

Fintech双周报第11期:DeepMind也要发展区块链技术,保障医疗隐私

图片来源: DeepMind 重点新闻(12月10日-12月23日)DeepMind也要发展区块链技术,保障医疗隐私Alphabet旗下的人工智慧公司DeepMind,该公司的共同创办人Mustafa Suleyman宣布,DeepMind正在寻求类似区块链的方式,应

Container双周报第24期:Docker将容器基础元件containerd开源,云端龙头一同参与开发

图片来源: Docker 重点新闻(12月10日-12月23日)·Docker将containerd开源,云端四龙头都要参与开发Docker宣布将Docker Engine中的核心元件containerd独立为新的开放源码专案,包括Alibaba Cloud、AWS、Google、IBM

HITCON创办人教你三大容器安全术加强网页安全

vArmour 资深工程师的徐千洋表示,利用Container建立网站,其中安全观念与Unix的操作不谋而合,「容器是chroot的强化版本,照理来讲安全性会更高。」 图片来源: iThome 作为一名资安工作者,台湾资安技术社群 CHRO

HoloLens发明人:AR和VR将成为颠覆企业关键技术

微软12月初于中国深圳举办WinHEC技术活动时,微软AR眼镜HoloLens的发明人Alex Kipman也亲自到场参加,「除了教育市场和娱乐应用外,AR正逐步为各产业带来巨大改变。」 图片来源: iThome 「AR和VR将成为改造产业、颠

容器用一次就要丟 蛋价可能涨3成

已缓冲2年的动物传染病防治条例第14条的“装载生鲜禽蛋,应使用一次性之装载容器或包材”明天上路,不论散装或盒装的容器,都要用一次就丟,但不影响散装蛋续卖。全球疫情年年愈趋严峻,近期韩国又发生人畜共通的禽

站长推荐: