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

简介:

我们经常说,“HTTPS很安全”或者“HTTP不安全”,但其实我们的意思是“HTTPS很难被窥探,中间人攻击很难执行”。

然而,HTTPS已经被黑客入侵,在某些情况下,HTTP足够安全。此外,如果我们在支持HTTPS的常见部署中发现可利用的漏洞,HTTPS可成为黑客网关,直到漏洞被修复。

HTTP和HTTPS是在IETF RFCs 7230-7237和2828中定义的协议。HTTPS被设计为安全的HTTP,但HTTPS安全HTTP不安全的说法隐藏着重要的例外情况。

虚拟机(VM)和容器没有严格的定义,也没有故意设计成对方更安全。

为什么我认为VM比容器更安全

在战争和软件中,分治法是胜利策略。当架构将单一复杂的难以解决的安全问题分解成更容易的问题时,在大多数情况下,结果会比解决所有问题的单一解决方案更加好。

容器是分治法应用于应用程序的示例。通过将每个应用程序锁定在自身,一个应用程序的漏洞将不会影响其他容器中的应用程序。虚拟机也是采用分治法,但它们在隔离方面走的更远。

在隔离应用程序中的漏洞不会直接影响其他应用程序,但隔离的应用程序可能会破坏与其他容器共享的单个操作系统,并影响所有容器。当使用共享操作系统时,应用程序、容器和操作系统部署堆栈中任何点的缺陷都会使整个堆栈的安全性失效,并危及物理机器。

虚拟化这样的分层架构可分离每个应用程序的执行堆栈,一直到硬件,这可消除应用程序相互干扰的可能性。此外,每个应用程序堆栈之间的接口被定义和限制,以防止被滥用。这可保护应用程序免受其他应用的影响。

虚拟机将控制用户活动的操作系统与控制访客操作系统及硬件之间交互的虚拟管理程序分隔。VM访客操作系统控制用户活动,但不会控制硬件交互。应用程序或访客操作系统中的漏洞不可能会影响物理硬件或者其他虚拟机。当虚拟机访客操作系统和支持容器的操作系统相同时(通常都是这种情况),相同的漏洞将会影响运行该操作系统的所有其他容器,但不会危及其他虚拟机。因此,虚拟机水平将应用程序分离,并垂直分离操作系统与硬件。

VM开销

VM的额外安全性是需要成本的。在计算系统中,控制转移总是很昂贵,无论是在处理器周期还是其他资源中。执行堆栈存储和重置,外部操作可能需要暂停或者被允许完成等。

访客操作系统和虚拟管理程序之间的转换费用很高,并且需要经常发生。即使是特殊控制指令植入到处理器芯片中,控制转移开销会降低VM的整体效率。这种降低是否很显著?这很难说。通过管理控制转移,应用程序可调整为降低开销,并且,大多数服务器处理器现在被设计为简化控制转移。换句话说,这种降低程度取决于应用程序和服务器,但开销永远不能完全消除,只会减轻。

虚拟管理程序漏洞

让问题进一步复杂化,在VM架构中分隔层会带来另一个问题:虚拟管理程序漏洞。虚拟管理程序漏洞是单点故障,可能带来潜在巨大后果,特别是在公共云中。可想而知,单个黑客可在虚拟机中启动代码,控制其他公共云消费者拥有的应用程序,从而入侵整个公共云。

任何坚固的架构都可能存在缺陷,虚拟管理程序也不例外。

虽然目前并没有任何重大虚拟管理程序攻击事故,但从常见漏洞和披露(CVE)数据库来看,研究人员确实发现一些虚拟管理程序缺陷。管理程序开发人员和供应商已经很快修复漏洞,在2017年3月,微软发布安全公告MS17-008,其中涉及Hyper-V管理程序中7个已修复的漏洞,都被标记为严重。

笔者仍然认为VM比容器提供更好的安全性,但我们必须认真看待虚拟机的安全性。

本文转自d1net(转载)

相关文章
|
运维 Java 虚拟化
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
675 12
|
存储 数据安全/隐私保护 数据中心
Incus 6.4 容器和虚拟机管理器发布
【10月更文挑战第26天】
830 2
Incus 6.4 容器和虚拟机管理器发布
|
存储 持续交付 虚拟化
|
应用服务中间件 Linux nginx
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx
这篇文章讨论了Linux虚拟机磁盘扩容的方法,包括外部配置、具体扩容步骤和扩容后的效果验证。同时,文章还涉及了Docker容器磁盘满的问题及其解决方法,如删除不必要的镜像和容器,以及调整Docker的安装路径。此外,还提到了意外情况的处理,例如误删除停止的容器后的应对措施。最后,文章还提供了使用Docker安装nginx的步骤和成功访问的截图。
Linux虚拟机磁盘扩容、Docker容器磁盘满的问题、Docker安装nginx
|
存储 Kubernetes 搜索推荐
使用容器方式创建firecracker虚拟机
使用容器方式创建firecracker虚拟机
1059 1
|
监控 应用服务中间件 nginx
详细解释容器以及虚拟机centos7.9容器化部署基础服务(容器化部署nginx)
容器是一种轻量级、可移植的软件打包和隔离技术,将应用程序及其依赖项打包,确保在任何环境中一致运行。容器共享主机操作系统内核,相比虚拟机更高效、轻量,具有快速启动和高资源利用率的特点。容器的关键技术包括命名空间(如 PID、NET 等)、控制组(cgroups)和联合文件系统(UnionFS)。使用容器可以提高开发和部署效率,简化管理,确保环境一致性。例如,在 CentOS 7.9 上部署 Nginx 时,可以通过 Docker 下载和运行 `nginx:1.20` 镜像,并通过端口映射使外部请求访问 Nginx 服务。此外,还可以将测试页面复制到容器中,进一步验证容器的功能。
601 0
|
Java 虚拟化 Docker
Docker简介及用途,为什么要使用Docker?Docker容器和虚拟机的区别
Docker简介及用途,为什么要使用Docker?Docker容器和虚拟机的区别
|
存储 缓存 监控
在Linux中,如何优化虚拟机和容器的性能和资源使用?
在Linux中,如何优化虚拟机和容器的性能和资源使用?
|
Linux KVM 虚拟化
在Linux中,如何进行虚拟机和容器的备份和迁移?
在Linux中,如何进行虚拟机和容器的备份和迁移?
|
存储 监控 Linux
在Linux中,如何实现虚拟机和容器之间的互操作性?
在Linux中,如何实现虚拟机和容器之间的互操作性?