讲师：云计算要实现预期的成本节约和效率,
在很大程度上依赖于虚拟化｡
现在, 通过使用虚拟化,
可以将许多逻辑服务器放置在单个物理服务器上｡
这反过来又减少了我们数据中心内部所需的物理空间､
电力和冷却量｡
此外, 通过使用虚拟化, 我们可以在需要时启动额外的虚拟服务器,
从而实现更高级别的可用性｡
这种动态配置内存和CPU资源的能力是云计算的关键优势之一｡
现在, 虽然云计算有许多不同的好处,
但我们仍然需要考虑许多安全问题｡
我们在物理服务器上遇到的大多数安全问题也会被带到云环境中｡
很多时候, 高管们认为迁移到云计算将解决他们所有的问题,
但事实并非如此｡
当使用虚拟化时, 一个或多个逻辑服务器驻留在单个物理服务器上｡
为了实现这一点, 我们使用称为hypervisor的专用软件｡
虚拟机管理程序控制所有资源的分配,
例如处理器､ 内存和硬盘可用性｡
从本质上讲, 虚拟机管理程序模拟了一台物理机器,
因此操作系统及其所有应用程序甚至没有意识到它们正在虚拟环境中运行｡
现在, 虚拟机管理程序分为两类, 第一类或裸机虚拟机管理程序,
第二类或托管虚拟机管理程序｡
现在, 当比较裸金属与托管虚拟机管理程序类型时,
从安全角度来看, 唯一的主要区别是,
对于托管类型, 我们必须确保底层操作系统也得到了适当的保护和修补｡
从性能方面考虑,
裸金属将比托管的同类产品更快､
更高效｡
我们拥有的另一个虚拟化选项被称为基于容器的虚拟化或容器化｡
对于这种类型, 根本不使用虚拟机管理程序,
相反, 每个容器都依赖于一个通用的操作系统作为每个容器的基础,
而每个容器共享相同的底层操作系统, 每个容器都可以拥有自己的二进制文件, 库和应用程序, 可以根据自己的需求进行定制｡
目前, 基于容器的虚拟化几乎只与Linux作为底层操作系统一起使用｡
基于容器的虚拟化也比类型1或类型2虚拟化使用更少的资源,
因为它不需要为每个单独的容器提供自己的操作系统副本｡
许多云服务提供商已经通过超融合基础设施将虚拟化向前推进了一步｡
这使供应商能够完全集成存储､
网络和服务器, 而无需执行硬件更改｡
相反, 他们依靠软件和虚拟化技术来执行所有集成｡
我们可以从单个界面或设备管理所有这些,
而不必担心所有底层供应商解决方案｡
应用程序虚拟化是另一种类型的虚拟化,
通常用于为底层主机创建额外的安全性｡
应用程序虚拟化是一种软件技术,
它将计算机程序从执行它们的底层操作系统中封装出来｡
一个完全虚拟化的应用程序甚至没有安装在传统意义上,
虽然它仍然执行, 就好像它是｡
通过应用程序虚拟化, 您可以在更现代的操作系统上运行为Windows
XP或Windows 7等生命周期结束的操作系统设计的传统应用程序,
甚至可以运行跨平台软件, 例如在Windows机器上运行Android应用程序｡
许多云计算提供商还提供虚拟桌面基础设施｡
现在, VMware允许云提供商从集中式服务器向最终用户提供完整的桌面操作系统｡
使用这种方法有很多安全方面的好处｡
举个例子, 我曾与一个组织合作,
该组织在每个用户早上登录时为他们创建一个新的虚拟桌面映像｡
此桌面是非持久性的,
因此即使它被攻击者利用, 它也会在用户注销时或每天午夜被销毁,
这有效地破坏了攻击者在最终用户桌面上保持持久性的能力,
即使安装了恶意软件｡
虚拟化的另一个重要用途是创建沙箱｡
现在, 沙箱允许您创建一个隔离的环境,
您可以在其中分析来宾操作系统中的病毒,
蠕虫, 特洛伊木马和其他恶意软件｡
现在, 因为它在这个位于隔离虚拟机内部的虚拟沙箱中,
所以您可以确保您无法感染将其作为底层主机操作系统或底层虚拟机管理程序托管的自己的计算机｡
当你作为一名网络安全分析师工作时,
你会经常使用沙箱来进行恶意软件分析, 特别是当你进行动态恶意软件分析时, 你会得到一个恶意软件, 你会运行它,
然后确定当恶意软件在特定的客户机操作系统上运行时会发生什么｡
虚拟机的另一个好用途是跨平台虚拟化｡
例如, 我使用MacBook Pro作为我的主要机器｡
因此, 如果我想测试不同操作系统的一些软件应用程序,
我可以去为每个操作系统购买新的机器,
例如一台笔记本电脑用于Windows, 一台笔记本电脑用于Linux, 一台笔记本电脑用于Mac｡
但是如果我使用虚拟化, 我可以通过使用MacBook
Pro上的托管系统进行跨平台虚拟化,
其中包含VMware, Parallels或VirtualBox等软件, 以便能够在现有的Mac OS环境上安装这些客户操作系统｡
这将允许我测试所有的软件片段,
不管它们需要什么操作系统, 看看它们将如何交互｡
这对Web开发人员来说尤其重要,
因为我想确保作为Web开发人员,
当我创建我的网站时, 它可以在Windows 10,
Windows 11, Mac, Chromebook, iPhone,
Android设备或其他任何东西上工作,
并且能够通过使用虚拟化在一台机器上测试所有这些, 这对我们开发人员来说是一个很好的资源｡
虚拟化的另一个重要用途是培训｡
您可以创建实验室环境,
这样人们就可以使用这些虚拟机在实时操作系统上进行练习｡
例如, 当你学习各种CompTIA认证时,
如果你购买了diontraining课程｡
com,
它们带有内置的动手实验室｡
通过这些实验, 您可以登录到我们基于云的环境,
然后能够以安全可靠的方式在Linux系统､
Windows 10系统､ Windows
Server系统和其他设备上执行操作,
这不会影响我们的生产环境, 因为它们都被隔离在此培训区域或此培训沙箱中｡
在培训或实验室环境中使用虚拟机的另一个好处是,
您可以在不同的点拍摄快照,
然后在拍摄快照的地方再次拍摄｡
举个例子, 当我过去亲自教我的课程时,
我实际上会创建Windows 7的坏机器,
我会有不同的问题让我的A+学生去解决｡
我会给他们虚拟机, 我会打开它, 我会从上一个安全点恢复,
这是我打破它的地方, 然后我会让他们试着找出它的问题所在, 以及如何修复它｡
这是在您的培训中使用虚拟机的一个很好的用途｡
当你继续学习, 开始学习Linux､
Windows､ 服务器环境､ Mac
OS和其他类似的东西时, 你可以启动包含这些客户操作系统的不同虚拟机, 并在安全可靠的环境中练习你的技能｡
我们需要讨论的最后一件事是仿真的概念,
因为许多人混淆了仿真和虚拟化｡
现在, 仿真涉及使用一个系统来模仿另一个系统｡
通过虚拟化, 可以创建和使用特定硬件的虚拟实例｡
所以在现实中, 你使用的是一个新的物理机器,
它由软件代表｡
然而, 使用模拟器, 一个软件实时翻译环境,
假装它是别的东西｡
例如, 如果我想在我的MacBook
Pro上玩一个旧的超级任天堂游戏,
我可以下载一个像OpenEmu这样的超级任天堂模拟器,
然后它会实时将游戏代码转换为我的Mac可以理解的指令｡
通过虚拟化, 正在运行的软件可以物理地访问您机器的硬件,
这比使用模拟器快得多｡
那么, 什么时候你可能想使用模拟器而不是虚拟化呢？
好吧, 如果你需要运行一个适用于其他类型硬件的操作系统,
比如Mac或Windows机器上的超级任天堂, 那么你将不得不使用模拟器｡
如果你想运行适用于不同操作系统的软件,
比如专为在ARM处理器上运行而设计的Android, 但你有一个英特尔处理器和一个Windows操作系统, 那么仿真器将是正确的选择,
因为你正在处理不同的底层硬件｡
另一方面, 如果您需要更高的速度和更好的性能,
则需要使用虚拟化解决方案｡
但是请记住, 使用虚拟化,
您只能运行为处理器的特定底层硬件编码的软件｡
通常情况下, 我们大多数人都使用基于x86或x64的处理器, 所以你运行Windows､
Linux或Mac, 或者这三种操作系统中的任何一种都可以在这些类型的虚拟化系统上正常工作｡
但是, 如果你试图运行一个为ARM处理器设计的操作系统,
它不会与虚拟化一起工作, 你必须使用模拟器｡
一般来说, 大多数时候你会使用虚拟化而不是模拟器,
因为它更快更高效, 而且大多数东西都是为了在x86或x64处理器上工作而编写的｡
但是, 如果你需要在不同的处理器上运行一些东西,
那就是你必须使用模拟器的时候｡