受保护的构造和受防护的 VM 概述

虚拟化安全是 Hyper-V 的主要投资领域。 除了保护主机或其他虚拟机免受运行恶意软件的虚拟机侵害外,我们还需要保护虚拟机避免受到被入侵主机的危害。 目前,这是每个虚拟化平台都面临的基本危险,无论是 Hyper-V、VMware 还是任何其他平台。 如果某个虚拟机(恶意地或无意地)脱离了组织控制,那么该虚拟机可以在任何其他系统上运行。 保护组织内的高值资产(例如域控制器、敏感文件服务器和人力资源系统)是头等大事。

为帮助保护免受被入侵虚拟构造的危害,Windows Server 2016 Hyper-V 引入了受防护的 VM。 受防护的 VM 是第 2 代 VM(在 Windows Server 2012 及更高版本上受支持),具有虚拟 TPM、使用 BitLocker 进行加密,并且只能在结构中健康且获得批准的主机上运行。 受防护的 VM 和受保护的构造启用云服务提供商或企业私有云管理员,可为租户 VM 提供更安全的环境。

受保护的构造组成:

  • 1 个主机保护者服务 (HGS)(通常是由 3 个节点构成的群集)。
  • 1 台或多台受保护的主机。
  • 一组受防护的虚拟机 下图显示了主机保护者服务如何使用证明以确保仅已知有效的主机可以启动受防护的 VM 和密钥保护,以便安全地释放受防护的 VM 的密钥。

当租户创建在受保护的构造上运行的受防护的 VM 时,Hyper-V 主机和受防护的 VM 自身均受到 HGS 保护。 HGS 提供了两个不同的服务:证明和密钥保护。 “证明”服务可确保只有受信任的 Hyper-V 主机可以运行受防护的 VM,而“密钥保护”服务则提供必需的密钥,以便为这些受防护的 VM 提供电源并将其实时迁移到其他受保护的主机。

受保护的主机构造示意图。

若要了解详细信息,请参阅此视频:受防护的虚拟机简介

受保护的构造解决方案中的证明模式

对于受保护的构造,HGS 支持不同的证明模式:

  • 受信任的 TPM 证明(基于硬件)
  • 主机密钥证明(基于非对称密钥对)

建议使用受信任的 TPM 证明,因为它可提供下表中所述的更强的保证,但要求 Hyper-V 主机具有 TPM 2.0。 如果当前没有 TPM 2.0 或任何 TPM,你可以使用主机密钥证明。 如果你在购买新硬件后决定移动到受信任的 TPM 证明,则可切换主机保护者服务上的证明模式,该操作对构造几乎没有任何影响。

为主机选择的证明模式 主机保证
受信任的 TPM 证明:提供可能的最强保护,同时需要执行更多的配置步骤。 主机硬件和固件必须包括已启用安全启动的 TPM 2.0 和 UEFI 2.3.1。 受保护的主机是根据其受信任的 TPM 标识、测量的启动顺序和代码完整性策略批准的,以确保它们只运行已批准的代码。
主机密钥证明:用来支持不能使用 TPM 2.0 的现有主机硬件。 需要较少的配置步骤且与常见服务器硬件兼容。 受保护的主机根据密钥的所有权获得批准。

从 Windows Server 2019 开始,另一个名为“受信任的管理员证明”的模式已弃用。 此模式基于指定 Active Directory 域服务 (AD DS) 安全组中的受保护的主机成员身份。 主机密钥证明提供类似的主机标识,并且更易于设置。

由主机保护者服务提供的保证

HGS 和创建受防护的 VM 的方法可帮助提供下列保证。

VM 保证类型 来自密钥保护服务和受防护的 VM 创建方法的受防护的 VM 保证
BitLocker 加密磁盘(操作系统磁盘和数据磁盘) 受防护的 VM 使用 BitLocker 来保护其磁盘。 使用经业界证明的技术(例如安全标准引导)来启动 VM,并解密由受防护的 VM 的虚拟 TPM 保护的磁盘所需的 BitLocker 密钥。 虽然受防护的 VM 只能自动加密并保护操作系统磁盘,但你还可以加密附加到受防护的 VM 的数据驱动器
从“受信任的”模板磁盘/映像中部署新的受防护的 VM 部署新的受防护的 VM 时,租户就能够指定他们信任哪些模板磁盘。 受保护的模板磁盘具有其内容将被视为可信时的时间点上计算出的签名。 然后,磁盘签名存储在签名目录中,创建受防护的 VM 时,租户可安全地将此签名目录提供给构造。 设置受防护的 VM 时,要再次计算磁盘签名,并与目录中的受信任签名进行比较。 如果签名匹配,则表示受防护的 VM 已部署。 如果签名不匹配,则表示受防护的模板磁盘被视为不受信任,并且部署将失败。
创建受防护的 VM 时如何保护密码和其他机密 创建 VM 时,有必要确保 VM 机密(例如受信任的磁盘签名、RDP 证书和 VM 本地 Administrator 帐户的密码)不会泄露到构造中。 这些机密存储在名为屏蔽数据文件(.PDK 文件)的加密文件中,该文件由租户密钥提供保护,并由租户上载到构造中。 创建受防护的 VM 时,租户选择要使用的屏蔽数据,这些数据仅安全地向受保护的构造内的受信任的组件提供这些机密。
租户控制 VM 可以开始的位置 屏蔽数据还包含允许运行特定的受防护 VM 的受保护构造的列表。 这很有用,例如,受防护的 VM 通常驻留在本地私有云中,但出于灾难恢复目的,可能需要迁移到其他(公有或私有)云中的情况。 目标云或构造必须支持受防护的 VM,受防护的 VM 必须允许该构造运行它。

什么是屏蔽数据,为什么需要屏蔽数据?

屏蔽数据文件(也称为预配数据文件或 PDK 文件)是加密文件,由租户或 VM 所有者创建,用于保护重要的 VM 配置信息,例如管理员密码、RDP 和其他标识相关的证书,域加入凭据等。 创建受防护的 VM 时,构造管理员使用屏蔽数据文件,但无法查看或使用文件中包含的信息。

此外,屏蔽数据文件包含机密信息,例如:

  • 管理员凭据
  • 答案文件 (unattend.xml)
  • 确定 VM 是否使用此屏蔽数据创建的安全策略配置为支持屏蔽或加密
    • 请记住,配置为屏蔽的 VM 受构造管理员的保护,但支持加密的虚拟机不受保护
  • RDP 证书通过 VM 保护远程桌面通信
  • 包含受信任的、允许从中创建新 VM 的带有模板磁盘签名的列表的卷签名目录
  • 定义受防护的 VM 被授权运行在哪个受保护的构造上的密钥保护程序 (KP)

屏蔽数据文件(PDK 文件)提供租户可以预期方式创建 VM 的保证。 例如,当租户将应答文件 (unattend.xml) 置于屏蔽数据文件中,并将其传递给主机供应商时,主机供应商无法查看或更改该应答文件。 同样,创建受防护的 VM 时,主机供应商无法替代不同的 VHDX,因为屏蔽数据文件包含无法从中创建受防护的 VM 的受信任的磁盘签名。

下图显示了屏蔽数据文件和相关的配置元素。

有关显示屏蔽数据文件和相关的配置元素的图例。

受保护的构造可以运行的虚拟机的类型有哪些?

受保护的构造能够以三种可能的方式之一运行 VM:

  1. 常规 VM 不提供超越 Hyper-V 之前版本的任何保护功能
  2. 支持加密的 VM 的保护功能可由构造管理员配置
  3. 受防护的 VM 的保护功能均已打开,并且不能由构造管理员禁用

支持加密的 VM 旨在用于构造管理员完全受信任的地方。 例如,企业可以部署受保护的构造,以确保 VM 磁盘可以静态加密来达到相容目的。 构造管理员可以继续使用方便的管理功能,例如 VM 控制台连接、PowerShell Direct 及其他日常管理和故障排除工具。

受防护的 VM 设计在必须保护 VM 的数据和状态免受构造管理员和可能运行在 Hyper-V 主机上的不受信任的软件侵害的构造中使用。 例如,受防护的 VM 从不允许 VM 控制台连接,反之,构造管理员可以为支持加密的 VM 打开或关闭此功能。

下表总结了加密支持和受防护的 VM 之间的差异。

功能 支持的第 2 代加密 第 2 代防护
安全启动 是,必需但可配置 是,必需并强制执行
Vtpm 是,必需但可配置 是,必需并强制执行
加密 VM 状态并实时迁移流量 是,必需但可配置 是,必需并强制执行
集成组件 可由构造管理员配置 阻止某些集成组件(例如数据交换、PowerShell Direct)
虚拟机连接(控制台)、HID 设备(例如键盘、鼠标) 处于开启状态,无法禁用 在 Windows Server 版本 1803 及更高版本的主机上启用;在较早主机上禁用
COM/串行端口 支持 已禁用(无法启用)
(向 VM 进程)附加调试程序1 支持 已禁用(无法启用)

1 由于 VM 的工作进程 (VMWP.exe) 是轻型受保护进程 (PPL),因此受防护的 VM 会阻止直接附加到进程(例如 WinDbg.exe)的传统调试程序。 不会阻止其他调试技术(例如 LiveKd.exe 使用的技术)。 与受防护的 VM 不同,加密支持的 VM 的工作进程不作为 PPL 运行,因此传统调试器(例如 WinDbg.exe)将继续正常运行。

受防护的 VM 和支持加密的 VM 继续支持常见构造管理功能,例如实时迁移、Hyper-V 副本及 VM 检查点等。

主机保护者服务的作用:如何启动受防护的 VM

屏蔽数据文件工作流的示意图。

  1. VM01 启动。 受保护的主机可在受防护的 VM 上启动之前,必须首先明确证明它的健康状况。 为了证明处于健康状态,它必须向密钥保护服务 (KPS) 提供健康证书。 通过证明过程获取健康证书。

  2. 主机请求证明。 受保护的主机请求证明。 证明模式由主机保护者服务指定:

    • 受信任的 TPM 证明:Hyper-V 主机发送的信息包括:

      • TPM 识别信息(其认可密钥)

      • 在最新引导顺序(TCG 日志)期间启动的进程的信息

      • 有关应用在此主机上的代码完整性 (CI) 策略的信息。

        主机启动时要进行证明,之后每 8 小时要进行证明。 当 VM 尝试启动时,如果主机因某种原因而不具有证明证书,则该操作也会触发证明。

    • 主机密钥证明:Hyper-V 主机发送密钥对的一半公共内容。 HGS 验证主机密钥是否已注册。

    • 受信任的管理员证明:Hyper-V 主机发送 Kerberos 票证,这标识了该主机所处的安全组。 HGS 验证该主机属于由受信任的 HGS 管理员之前所配置的安全组。

  3. 证明成功(或失败)。 证明模式确定成功证明主机正常运行所需的检查。 在受信任的 TPM 证明中,主机的 TPM 标识、启动量化指标和代码完整性策略确定了其运行状况。 使用主机密钥证明,仅验证主机密钥的注册。

  4. 发送到主机的证明证书。 假设证明成功,健康证书发送到主机,主机被视为“受保护”(被授权运行受防护的 VM)。 主机使用健康证书授权密钥保护服务安全地释放所需的密钥,以便与受防护的 VM 进行协作

  5. 主机请求 VM 密钥。 受保护的主机不具有启动受防护的 VM(在此例中是 VM01)所需的密钥。 要获取必要的密钥,受保护的主机必须向 KPS 提供以下内容:

    • 当前健康证书
    • 包含启动 VM01 所需的密钥的加密机密(密钥保护程序或 KP)。 机密使用仅 KPS 知道的其他密钥进行加密。
  6. 密钥释放。 KPS 检查健康证书以确定其有效期。 证书必须未过期,并且 KPS 必须信任颁发它的验证服务。

  7. 密钥返回到主机。 如果健康证书有效,则 KPS 会尝试解密该机密,并安全地返回启动 VM 所需的密钥。 请注意,密钥被加密到受保护的主机的 VBS 。

  8. VM01 上启动的主机。

受保护的构造和受防护的 VM 术语表

术语 定义
主机保护者服务 (HGS) 启动或实时迁移受防护的 VM 时,安装在可以测量 Hyper-V 主机运行状况并向健康 Hyper-V 主机释放密钥的裸机服务器的安全群集上的 Windows Server 角色。 这两项是受防护的 VM 解决方案的基本功能,分别称为证明服务密钥保护服务
受保护的主机 可以运行受防护的 VM 的 Hyper-V 主机。 仅当主机由 HGS 的证明服务认定为健康时,才可以被认为是“受保护”。 受防护的 VM 无法在未经证明或证明失败的 Hyper-V 主机上启动,也无法实时迁移到这种主机上。
受保护的构造 这是集合术语,用于描述 Hyper-V 主机构造,以及可以管理和运行受防护的 VM 的主机保护者服务。
受防护的虚拟机 (VM) 仅可在受保护的主机上运行的虚拟机,免受来自恶意构造管理员和主机恶意软件的检查、篡改和盗窃。
构造管理员 可以管理虚拟机的公有或私有云管理员。 在受保护的构造的上下文中,管理员无权访问受防护的 VM,也无权访问决定受防护的 VM 可以在哪些主机上运行的策略。
HGS 管理员 公有或私有云中受信任的管理员,有权管理策略和受保护的主机(即可以运行受防护的 VM 的主机)的加密材料。
预配数据文件或屏蔽数据文件(PDK 文件) 租户或用户创建的、用于保存重要 VM 配置信息,并防止他人访问该信息的加密文件。 例如,屏蔽数据文件可以包含创建 VM 时要分配给本地 Administrator 帐户的密码。
基于虚拟化的安全 (VBS) 基于 Hyper-V 的处理和存储环境受管理员的保护。 虚拟安全模式为系统提供存储操作系统管理员不可见的操作系统密钥的功能。
虚拟 TPM 受信任的平台模块 (TPM) 的虚拟化版本。 从 Windows Server 2016 中的 Hyper-V 开始,可以提供虚拟 TPM 2.0 设备,这样就可以像物理 TPM 允许物理计算机加密一样来加密虚拟机。

其他参考