传统容器已死,安全容器将成为云原生标配

作者:admin   发布时间:2021-10-21 23:17   浏览:
正文

云园是一座靠精致理论建造的摩天大楼,但其砖石需要加固。

当云原生地将容器技术视为下一代云计算的基础之一时,并不意味着容器本身已经停止进化。事实上,当以Docker为代表的传统容器遇到多租户场景时,其安全问题会立即暴露出来,进而让人错失虚拟化的好处。于是,利用虚拟化技术的“安全容器”概念应运而生,Kata Containers开启了这一变革,刚刚过了两周年。

新的Kata Containers为我们带来了虚拟机的安全性和隔离性、与容器兼容的API接口以及与容器相同的性能水平,这意味着采用安全容器的时机已经成熟。

相比之下,上个月Docker的企业级业务被打包出售,据说几轮之后售价甚至低于融资总额。

从现在开始,所有在生产环境中使用容器的公司都有必要审查自己的安全策略,并制定从容器到安全容器的迁移计划。

这一切是怎么发生的?听着,我会为你走到一起。

Docker的溃败

2019年11月13日,私有云基础设施公司Mirantis在其官方博客中宣布,收购了Docker的企业级业务,包括接管700多家客户,这标志着Docker自2013年以来的商业探索彻底失败。

对于不了解集装箱发展史的人来说,这个结果很难理解。Docker是集装箱热潮的开创者,而container则是本轮云计算技术演进的发起者。为什么它站在风中不能飞?

这离不开Docker创始人的一系列困惑,但事实上,Docker今天的命运是四年前决定的。

在2013年之前,该行业从未找到一种本地的方式来开放云计算。以早期版本的云铸造为代表的GAE和PaaS把所有人都带到了坑里,只留下一地鸡毛。直到Docker打开源码,大家才如梦方醒。原来不是方向不对,而是应用分发和交付的手段不好。

然而,Docker开放其核心代码的最初意图不仅是为了行业的利益,也是为了通过这种方式吸引商业客户。Docker公司将Docker注册为商标,引起了社会的警惕,各种自制集装箱项目层出不穷。

为了结束这种混乱局面,2015年6月成立了容器开放促进组织OCI,旨在围绕容器格式和运行时制定开放标准。Docker作为创始成员,有意掌握制定该标准的权利。

然而,每个人都被Docker在商业化和社区中左右摇摆的态度吓坏了。2014年Kubernetes发布后,迅速吸引了包括红帽在内的一批成员。2015年7月,仅仅一年后,Kubernetes发布了1.0版本,随后是CNCF云原生计算基金会。

CNCF的诞生宣告了云计算技术演进的重心从容器转移到容器编排。2016年,Kubernetes发布了容器运行时接口CRI。只要满足这个接口,Kubernetes就可以通过它运行容器。是不是Docker不重要。

这样,容器就从Docker变成了标准的接口实现,只要符合这个标准,不管它后面运行的是什么。

将container和Kubernetes结合起来,每个人在自己的集群中都有美好的时光,但是当云厂商试图向公众提供容器服务时,多租户的安全问题就出现了。

AWS的选择

要理解这个问题,首先要理解容器的原理。

Linux容器的本质是一种进程隔离技术。通过cgroup和namespace,容器中的应用程序只使用给定的资源,不同的容器不会互相入侵。

从容器中的应用来看,它只能看到给定的计算存储资源和定制的系统,但从容器外的系统来看,它运行着一个又一个进程。

如果这些容器都属于同一个用户,那也没什么,但是如果是云服务,一台机器运行不同用户的进程,那么只要想想,到处都有漏风的感觉!

从技术上讲,AWS在其官方博客中对这一安全风险的描述如下:

由于操作系统内核漏洞,Docker 组件设计缺陷,以及不当的配置都会导致 Docker 容器发生逃逸,从而获取宿主机权限。由于频发的安全及逃逸漏洞,在公有云环境容器应用不得不也运行在虚拟机中,从而满足多租户安全隔离要求。而分配、管理、运维这些传统虚拟机与容器轻量、灵活、弹性的初衷背道而驰,同时在资源利用率、运行效率上也存浪费。

这就是云原生中的多租户问题,其本质是容器安全问题。几年前,云供应商在推出Kubernetes集群服务方面取得了快速进展,但他们在提供单容器托管方面进展缓慢,因为这个问题没有得到解决。

此外,多租户问题不仅存在于公共云中,也存在于公司内部的私有云中。不同部门、团队的应用要强隔离,避免一个业务影响整个公司的问题。但是,过去人们用的是气势很强的集装箱,假装看不出这个问题。

对于多租户问题,虽然社区已经逐渐拿出了一些解决方案,但还不成熟,缺乏一个标志性事件将他们推向前台。终于在2018年12月,AWS出手了。

众所周知,AWS是云计算行业的佼佼者。但是,在从容器到云原生的浪潮中,AWS成了跟随者,它绝对不甘心。最后,它给出了自己关于容器安全性的答案,并再次领先于所有云供应商。

AWS的答案是鞭炮,一个轻量级的虚拟机(MicroVM),相对于全功能的虚拟机。后者以QEMU为代表,声称能够模拟所有硬件设备。鞭炮保存了所有可以保存的地方,最后留下了一个极其精致的运行时,只保护受保护的地方。

性能方面,鞭炮和容器非常接近。它的初衷是为AWS无服务器服务Lambda提供保护,性能必须跟上。在安全性方面,它提供了虚拟机级别的保护,可以保护内部和外部的漏洞和攻击。

AWS还引入了bucket的容器化实现,这意味着bucket可以用标准的容器方法来驱动,说明用虚拟机解决容器安全之路是可行的。

但是AWS有自己完整的生态,鞭炮也是这个生态的一部分。虽然它是开源的,但是社区不能开箱即用,并且与Kubernetes有一些不兼容的地方。

这时,轮到卡塔容器出现了。

面向云原生的虚拟化

Katcontainers的前身是Hyper runV和英特尔Clear Container,两者都试图用虚拟化技术解决容器安全问题。

两者都是在2015年5月布局的。后来发现彼此的技术路径差不多。双方创始人聚在一起总结,或者合并,于是卡塔容器诞生了。

当时面临库本内特斯和CNCF强势攻击的OpenStack Foundation一眼就看到了Kata Containers的应用潜力,于是改变策略开放基础设施,接受Kata Containers作为第二个顶级开放基础设施项目,与OpenStack处于同一水平。

然而,Kata Containers在诞生后的一段时间里并没有受到社区开发者的青睐。

这有两个重要原因。第一个是,虽然Kata从第一天开始就把与Kubernetes的集成作为重中之重,但是早期版本的Kubernetes只考虑了如何运行容器,并且花了一些额外的努力才让Kubernetes支持非容器技术。当时,runC容器仍在如火如荼地进行,因此这是Kubernetes管理虚拟机的一种替代方式。其次,虽然Kata成功地使虚拟机与容器的大多数接口兼容,但其性能很差。其中一个主要原因是它采用了上面提到的QEMU作为底层对接系统的接口层,而QEMU是一个包含数百万行代码和数万个文件的项目。虽然Kata试图简化它,但它带来了额外的性能损失,这使得对安全性不敏感的应用程序很难使用。

事情的转折点在于AWS鞭炮的发布。当时鞭炮只支持AWS的无服务器服务,但明眼人都能看出无服务器支持。集装箱远吗?鞭炮也让人们更加关注集装箱的安全,卡塔集装箱开始受到更多的关注。

与此同时,Kata正在利用包括bucket在内的开源社区的最新发展,进一步降低开销:比如VMM支持bucket作为部分适用场景,并开发自己的信任-VMM云-虚拟机管理程序,用轻量级rust-agent替代沙盒agent,使内存消耗从十几MB降低到1.1MB,开销已经可以接受。

另一方面,在Kata Containers和社区的推动下,Kubernetes开始接受安全容器,在Kubernetes运行Kata不再需要额外的处理。

在Kata Containers成立两周年之际,它将自己定义为云诞生的虚拟化。

之所以要强调虚拟化,是因为其本质是虚拟化技术,但与传统虚拟化相比,Kata Containers走的是完全不同的发展方向,适合云原生场景下的虚拟化。

但是为什么它被称为安全容器呢?现在回到我们一开始介绍的多租户问题,当您在使用Kata Containers之后启动一个容器时,您实际上启动了一个虚拟机,但是这个虚拟机的功能、生命周期和性能与容器完全相同。鸭子测试说,如果一只动物走路像鸭子,说话像鸭子,看起来像鸭子,啄起来像鸭子,那么我们认为它是一只鸭子。卡塔集装箱也是如此。

Docker自身的技术路线无法很好地解决安全问题,所以当CRI和安全容器出现时,其商业探索注定会有一个糟糕的结局。

Kata Containers与安全容器的未来

软件世界有很多不确定性,但我们可以肯定安全问题会发生。

那么,如何处理安全问题呢?莱纳斯说过这句话:

安全问题的唯一正解在于允许那些(导致安全问题的)Bug发生,但通过额外的隔离层来阻挡住它们。—— LinuxCon NA 2015, Linus Torvalds

为了一劳永逸地解决容器安全问题,可能只需要增加一个额外的隔离层,这也是Kata Containers的想法。

值得一提的是,安全容器不仅仅是卡塔容器和鞭炮,谷歌的gVisor是另一条路线,是更纯粹的隔离层。在上层应用程序对系统的所有访问都由隔离层处理后,一些请求被移交给主机进行响应。

经过两年的努力,卡特容器行业开始逐渐跟进。比如在百度AI Cloud,开始在函数计算、容器服务、边缘计算等方面尝试。

2019年,卡塔集装箱创始人加入蚂蚁金服,蚂蚁没有干涉卡塔集装箱的发展路线。Kata仍然是一个社区主导的开源项目,Kata Containers开始逐渐登陆蚂蚁和阿里。

Kata Containers未来将继续优化其性能。当然,更重要的是,容器和虚拟机就像天平的两端。卡塔容器需要不断探索才能找到平衡点。

AWS已经证明,安全容器是公有云落地Serverless的关键技术之一。同样,边缘计算将成为安全容器的典型应用场景。

随着AWS和各云厂商的跟进,可以预见,2020年将爆发安全集装箱落地。

当然,现在学还不晚。请关注卡塔集装箱,了解其最新进展:

github.com/kata-containers

参考文章:

卡塔集装箱:两年。

Katcontainers:云原生的虚拟化。

katcontainers在百度AI云中的应用。

深入分析AWS鞭炮的基本原理——虚拟化和容器运行时技术。

k歌软件

热点文章
近期更新
友情链接

Powered by 手机黄台网站大全 @2018 RSS地图 HTML地图

h福利社 2013-2021 版权所有