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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介:

我们经常说,“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比容器提供更好的安全性,但我们必须认真看待虚拟机的安全性。

作者:佚名
来源:51CTO

相关文章
|
5天前
|
监控 安全 数据安全/隐私保护
【Docker专栏】Docker容器安全:防御与加固策略
【5月更文挑战第7天】本文探讨了Docker容器安全,指出容器化技术虽带来便利,但也存在安全隐患,如不安全的镜像、容器逃逸、网络配置不当等。建议采取使用官方镜像、镜像扫描、最小权限原则等防御措施,并通过安全的Dockerfile编写、运行时安全策略、定期更新和访问控制等加固容器安全。保持警惕并持续学习安全实践至关重要。
【Docker专栏】Docker容器安全:防御与加固策略
|
9天前
|
存储 缓存 安全
Golang深入浅出之-Go语言中的并发安全容器:sync.Map与sync.Pool
Go语言中的`sync.Map`和`sync.Pool`是并发安全的容器。`sync.Map`提供并发安全的键值对存储,适合快速读取和少写入的情况。注意不要直接遍历Map,应使用`Range`方法。`sync.Pool`是对象池,用于缓存可重用对象,减少内存分配。使用时需注意对象生命周期管理和容量控制。在多goroutine环境下,这两个容器能提高性能和稳定性,但需根据场景谨慎使用,避免不当操作导致的问题。
33 4
|
14天前
|
存储 安全 Cloud Native
容器安全-镜像扫描
容器镜像安全至关重要,镜像扫描能检查镜像中的安全漏洞,防范云原生环境风险。72%客户拥有超过100个容器,安全问题日益凸显。两种扫描方案:定期扫描镜像注册表或集成到Pipeline中。此外,蜂巢提供全生命周期镜像扫描,包括漏洞、病毒检测,实时更新补丁数据库,并给出修复建议,助力企业保障容器安全。目前已服务100+头部客户。
|
25天前
|
存储 安全 Java
Java中的容器,线程安全和线程不安全
Java中的容器,线程安全和线程不安全
17 1
|
29天前
|
安全 算法 Java
安全无忧:Java并发集合容器的应用与实践
安全无忧:Java并发集合容器的应用与实践
30 0
安全无忧:Java并发集合容器的应用与实践
|
2月前
|
存储 Kubernetes 数据安全/隐私保护
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(配置与密码安全)
总结归纳Kubernetes | 一站式速查知识,助您轻松驾驭容器编排技术(配置与密码安全)
41 0
|
2月前
|
存储 Kubernetes 云计算
云计算基础与实战:从虚拟机到容器化应用
云计算基础与实战:从虚拟机到容器化应用
36 0
|
3天前
|
监控 Kubernetes Docker
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
【5月更文挑战第9天】本文探讨了Docker容器中应用的健康检查与自动恢复,强调其对应用稳定性和系统性能的重要性。健康检查包括进程、端口和应用特定检查,而自动恢复则涉及重启容器和重新部署。Docker原生及第三方工具(如Kubernetes)提供了相关功能。配置检查需考虑检查频率、应用特性和监控告警。案例分析展示了实际操作,未来发展趋势将趋向更智能和高效的检查恢复机制。
【Docker 专栏】Docker 容器内应用的健康检查与自动恢复
|
1天前
|
NoSQL Redis Docker
Mac上轻松几步搞定Docker与Redis安装:从下载安装到容器运行实测全程指南
Mac上轻松几步搞定Docker与Redis安装:从下载安装到容器运行实测全程指南
12 0
|
3天前
|
存储 安全 数据库
【Docker 专栏】Docker 容器内应用的状态持久化
【5月更文挑战第9天】本文探讨了Docker容器中应用状态持久化的重要性,包括数据保护、应用可用性和历史记录保存。主要持久化方法有数据卷、绑定挂载和外部存储服务。数据卷是推荐手段,可通过`docker volume create`命令创建并挂载。绑定挂载需注意权限和路径一致性。利用外部存储如数据库和云服务可应对复杂需求。最佳实践包括规划存储策略、定期备份和测试验证。随着技术发展,未来将有更智能的持久化解决方案。
【Docker 专栏】Docker 容器内应用的状态持久化