虚拟机比容器更安全?

本文讲的是 虚拟机比容器更安全?,理论上,是的。实际上,也许。

我们常说,“HTTPS安全”,或者“HTTP不安全”。但我们真正的意思是,“HTTPS更难以窃听,难以进行中间人攻击”,或者“电脑小白都能偷听HTTP通信”。

然而,HTTPS已经被黑过了,而某些情况下,HTTP已足够安全。而且,一旦在支持HTTPS的常用实现中发现可利用的缺陷(想想OpenSSL和心脏滴血),HTTPS就会在该实现被修正之前都被当成入侵的门道。

HTTP和HTTPS是IETF(互联网工程任务组) RFC 7230-7237和2828中定义的协议。HTTPS被设计成HTTP的安全版本,但说HTTPS安全而HTTP不安全,却隐藏了重要的例外情况。

虚拟机(VM)和容器的定义没那么严格,也没有被特意设计成谁比谁更安全。因此,这里面的安全问题就更加隐晦了。

为什么虚拟机比容器更安全

分治法,在战争和软件界都是制胜法宝。架构师将单一复杂安全问题分解为更简单的多个问题时,大多数情况下,结果都会比包揽所有问题的单个解决方案更安全。

容器,就是一个将分治法水平铺开到多个应用中的例子。通过将每个应用限制在自己的范围里,单个应用中的弱点便不能影响到其他容器中的应用。VM同样采用分治思想,但它们的隔离又更进了一步。

被隔离应用中的漏洞不能直接影响到其他应用,但被隔离应用会破坏与其他容器共享的操作系统(OS),进而影响到所有容器。共享操作系统的情况下,应用、容器和OS实现栈中任意一点上的缺陷,都可以令整个堆栈的安全性失效,侵害到物理机器。

虚拟化之类的分层架构,则将每个应用的执行栈从上到下从软件到硬件地隔离开,清除掉共享OS造成应用间相互影响的可能性。另外,每个应用栈与硬件之间的接口都有定义,从而限制了滥用可能。这给各应用间独善其身创造了格外坚实的边界。

虚拟机管理程序控制着客户OS与硬件间的交互,VM就是通过该管理程序隔离开了控制用户活动的OS。VM客户OS控制着用户活动,但不参与硬件交互。某应用或客户OS中的漏洞,不可能影响到物理硬件或其他VM。VM客户OS和支持容器的OS相同的时候(这种情况很常见),OS上会破坏所有其他容器的漏洞,却不会危害到其他VM。由此,VM不仅水平分隔应用,也纵向隔离了OS和底层硬件。

VM开销

VM提供的额外安全性是有代价的。计算系统中,控制转移往往开销巨大,从处理器周期和其他资源耗用上都可以呈现出来。执行栈需要存储和重置,外部操作可能不得不挂起或允许继续完成,诸如此类。

客户OS和虚拟机管理程序间的切换开销很大,且经常发生。即便处理器芯片中烧录进特殊控制指令,控制转移开销也降低了VM的整体效率。这种降低很巨大吗?难说。可以通过管理控制转移,来调整应用,减低开销;大多数服务器处理器如今也设计成了简化控制转移的类型。换句话说,效率降低大不大,取决于应用和服务器,但“开销不可能被完全清除”这一点是毫无争议的。

虚拟机管理程序漏洞

更糟糕的是,VM架构中的分隔层还引发了另一个潜藏的幽灵:虚拟机管理器漏洞。虚拟机管理程序被破坏,可能导致牵一发而动全身的巨大后果,尤其是在公共云环境中。可以想见,仅仅一个漏洞利用,就可以让一名黑客,在控制着其他公共云消费者应用的VM上执行代码,掌控公共云的一部分。

再坚如磐石的架构,也会有可大幅削弱系统的实现缺陷。虚拟机管理器被黑事件常常被大言不惭的声明搪塞过去:理由是虚拟机管理程序太简单了,而且写得很完美,也经过了超仔细的审查,所以永远不会出故障,不会被黑。虚拟机管理程序漏洞利用的破坏性堪比WannaCry,但也不用太担心这一点。不过,心脏滴血确实发生了,而OpenSSL的代码行数也远远不及虚拟机管理程序多。

目前为止还没出现什么重大虚拟机管理程序安全事件。但稍微瞄一眼通用漏洞与暴露(CVE)数据库,就可以知道研究人员们确实找到了可以利用的虚拟机管理程序漏洞。虚拟机管理程序开发者和厂商的补丁速度倒是也不算慢。2017年3月,微软发布安全公告 MS17-008,记录了7个已打补丁的Hyper-V虚拟机管理程序漏洞——全部被认定为关键级别漏洞。

VM比容器的安全性更高,但我们也必须仔细审查VM系统的安全。而且,容器和VM往往捆绑在一起,需要注意的点还很多。

时间: 2024-09-20 00:54:18

虚拟机比容器更安全?的相关文章

英特尔推出Clear Linux项目:融合虚拟机和容器的优势

本文讲的是英特尔推出Clear Linux项目:融合虚拟机和容器的优势,[编者的话]Clear Linux的目标是让用户可以充分利用虚拟机的隔离技术,以及容器的部署优势.本文的作者是英特尔的工程师,他表示Clear Linux不管是在启动速度还是内存消耗方面都不逊于容器.Clear Linux目前还处于试验阶段,接下来会支持AppC以及Docker. 容器技术非常火,真是人见人爱.开发者可以使用它来轻松快捷的创建自己的应用程序,同时DevOps和信息系统部门的同事也可以方便的管理和部署.从很大程

深入理解虚拟机、容器和Hyper技术

本文讲的是深入理解虚拟机.容器和Hyper技术[编者的话]本文首先介绍了操作系统,然后引出容器技术以及虚拟机技术,最后介绍了Docker和Hyper技术.通过本文可以清楚地对三者有感性认识. 操作系统概述 我们可以把操作系统简化为: 操作系统 = 内核 + apps 其中内核负责管理底层硬件资源,包括CPU.内存.IO设备等,并向上为apps提供系统调用接口,上层apps应用必须通过系统调用方式使用硬件资源,通常并不能直接访问资源.这里的apps指的是用户接口,比如shell.gui.servi

虚拟机VS容器 安全比拼谁更胜一筹?

我们经常说,"HTTPS很安全"或者"HTTP不安全",但其实我们的意思是"HTTPS很难被窥探,中间人攻击很难执行". 然而,HTTPS已经被黑客入侵,在某些情况下,HTTP足够安全.此外,如果我们在支持HTTPS的常见部署中发现可利用的漏洞,HTTPS可成为黑客网关,直到漏洞被修复. HTTP和HTTPS是在IETF RFCs 7230-7237和2828中定义的协议.HTTPS被设计为安全的HTTP,但HTTPS安全HTTP不安全的说法隐藏

红帽团队与Black Duck一起让容器更安全

本文讲的是红帽团队与Black Duck一起让容器更安全,[编者的话]Black Duck Software将其Black Duck Hub分析工具集成到红帽的PaaS产品中,将致力于容器安全检测. Black Duck Software,一个对开源代码库扫描和已知软件漏洞检测的软件开发公司,正与红帽公司一起把Black Duck Hub分析​​工具集成到红帽的OpenShift PaaS产品. 开源在企业中的不断增长,随之而来还需要明白一件事情,开源并不意味着没有漏洞. 据Red Hat和Bl

让容器更安全、更有用

本文讲的是让容器更安全.更有用[编者的话]本文介绍了如何利用Docker镜像的分层文件系统来增强Docker容器的安全性.Docker镜像的分层文件系统可以使大部分的应用运行在只读状态,状态的改变会被限制在特定的读写层次,因此更容易被检测和跟踪. Docker容器已经成为开发者工具箱中非常重要的工具,这项技术的被接受程度也已经非常高了.到今天为止,Docker已经有超过了20亿次的下载,这对于2015年4月的3亿次的下载来讲是一次飞速的发展.有些组织刚刚开始使用这项技术,而有的公司则已经深入研究

容器还是虚拟机 并不一定非此即彼

许多人认为在容器和虚拟机之间只能选择其中一种,但事实并非如此--下面将详细介绍其中的原因. IT专家一直在尝试解决一个问题:应该怎样在容器和虚拟机之间做出选择,而现在的解决方案是同时使用两种技术. 虚拟机和容器技术是实现虚拟化的两种不同方式,二者都能够实现多种应用程序共享相同硬件资源,但是其技术特点.优势以及劣势却完全不同,这周Container World的与会者尤为深刻地感受到了这一点. 从易于使用和自动化的角度来看,容器技术似乎更加占据优势. "相比于虚拟机,容器技术要简单的多,"

别轻易说取代:容器不会取代虚拟机

自容器概念兴起,就有很多人认为:容器将取代虚拟机,容器作为"虚拟化2.0"概念获得企业和开发者的关注.笔者认为,容器非但不会取代虚拟机,相反,二者或将形成一种互为补充的姿态,优化企业的IT体系. 容器的代表作Docker 对于很多程序员来说,或许还不够了解容器,但一定听说过Docker.Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的 Linux 机器上,Docker称之为:Build once,Run anywher

虚拟机已死,容器才是未来?

我也曾经是容器技术尤其是 Docker 粉丝,但用了一年后觉得事情也没那么美好,而颇有一些同学以及一些公司依然认为容器就是银弹,虚拟机已经是昨儿黄花必须打倒,大家赶紧一切皆容器.这里我对这种观点吐吐槽.仅代表作者个人看法 首先要明确的是,软件开发和运维活动中,可维护性.正确性.性能的优先级是依次降低的,不要跟我抬杠少数极端情况.关于可维护性和正确性的先后,著 名的 "worse is better" 文章就是很好的无奈的解释,如果你犹豫这两者,这还情有可原,毕竟真善美和糙快猛的斗争从未

容器 VS. 虚拟机:云中应该使用哪一种?

在开足马力使用容器之前,了解容器与虚拟机在私有云.公共云以及混合云部署之间的区别是至关重要的. 虽然目前大多数的云部署都是基于虚拟机的,但是容器技术为云用户带来了显著的好处.但是,在选择一个取代之前技术的替代品时,了解两者之间的主要区别是很重要的.最大的问题在于虚拟机或容器是否最适合公共云.私有云或混合云模式.这个问题的答案取决于三个主要因素:虚拟机和容器之间的功能性差异.私有云和公共云组件之间的相互依存程度以及用户对他们自己云平台进行定制的意愿. 容器与虚拟机:两者之间的不同 虚拟机和容器两种