设置密钥提供程序后,具有所需特权的用户可以创建加密虚拟机和磁盘。这些用户还可以加密现有虚拟机和解密已加密的虚拟机,以及将虚拟可信平台模块 (vTPM) 添加到虚拟机。

根据密钥提供程序类型,过程流可能涉及密钥服务器、vCenter ServerESXi 主机。

标准密钥提供程序加密流程

在加密过程中,不同 vSphere 组件的交互方式如下所示。
  1. 用户执行加密任务(例如,创建加密虚拟机)时,vCenter Server 会从默认的密钥服务器请求一个新密钥。该密钥用作 KEK。
  2. vCenter Server 存储该密钥 ID,并将该密钥传递给 ESXi 主机。如果 ESXi 主机是某个集群的一部分,则 vCenter Server 会将该 KEK 发送至该集群中的每一个主机。

    密钥本身不存储在 vCenter Server 系统上。只有密钥 ID 是已知的。

  3. ESXi 主机为虚拟机及其磁盘生成内部密钥 (DEK)。它将内部密钥仅保存在内存中,并使用 KEK 加密该内部密钥。

    解密的内部密钥决不会存储在磁盘上。仅将加密的数据存储在磁盘上。由于 KEK 来自密钥服务器,所以主机会继续使用相同的 KEK。

  4. ESXi 主机使用加密的内部密钥加密虚拟机。

    任何具有 KEK 并可以访问加密密钥文件的主机可以在加密虚拟机或磁盘上执行操作。

可信密钥提供程序加密过程流

vSphere Trust Authority 加密过程流包括 vSphere Trust Authority 服务、可信密钥提供程序、vCenter ServerESXi 主机。

使用可信密钥提供程序对虚拟机进行加密与使用标准密钥提供程序时的虚拟机加密用户体验看起来一样。vSphere Trust Authority 下的虚拟机加密继续依赖于虚拟机加密存储策略或是否存在 vTPM 设备来决定何时加密虚拟机。从 vSphere Client 加密虚拟机时,仍使用配置的默认密钥提供程序(在 vSphere 6.5 和 6.7 中称为 KMS 集群)。此外,仍然可以通过与手动指定密钥提供程序类似的方式使用 API。为 vSphere 6.5 添加的现有加密特权在 vSphere 7.0 中仍与 vSphere Trust Authority 相关。

可信密钥提供程序与标准密钥提供程序的加密过程具有重要差异:

  • 在为 vCenter Server 实例设置密钥服务器时,Trust Authority 管理员不会直接指定信息,并且不会建立密钥服务器信任。而是,vSphere Trust Authority 发布受信任主机可以使用的可信密钥提供程序。

  • vCenter Server 不再向 ESXi 主机推送密钥,而是将每个可信密钥提供程序视为单个顶级密钥。
  • 只有受信任主机可以从 Trust Authority 主机请求加密操作。

vSphere Native Key Provider 加密过程流

从 vSphere 7.0 Update 2 开始,vSphere 中包含了 vSphere Native Key Provider。配置 vSphere Native Key Provider 时,vCenter Server 会将主密钥推送到集群中的所有 ESXi 主机。同样,如果更新或删除 vSphere Native Key Provider,更改将推送到集群中的主机。加密过程流程类似于可信密钥提供程序的工作方式。区别在于,vSphere Native Key Provider 会生成密钥,并使用主密钥对其进行封装,然后归还密钥以执行加密。

密钥服务器的自定义属性

密钥管理互操作协议 (KMIP) 支持添加用于供应商特定用途的自定义属性。自定义属性使您能够更具体地识别密钥服务器中存储的密钥。vCenter Server 为虚拟机密钥和主机密钥添加以下自定义属性。

表 1. 虚拟机加密自定义属性
自定义属性
x-Vendor VMware, Inc.
x-Product VMware vSphere
x-Product_Version vCenter Server 版本
x-Component 虚拟机
x-Name 虚拟机名称(从 ConfigInfo 或 ConfigSpec 收集)
x-Identifier 虚拟机的实例 UUID(从 ConfigInfo 或 ConfigSpec 收集)
表 2. 主机加密自定义属性
自定义属性
x-Vendor VMware, Inc.
x-Product VMware vSphere
x-Product_Version vCenter Server 版本
x-Component ESXi 服务器
x-Name 主机名称
x-Identifier 主机的硬件 UUID

密钥服务器创建密钥时,vCenter Server 将添加 x-Vendorx-Productx-Product_Version 属性。使用密钥对虚拟机或主机进行加密时,vCenter Server 将设置 x-Componentx-Identifierx-Name 属性。您或许能够在密钥服务器用户界面中查看这些自定义属性。请咨询密钥服务器供应商。

主机密钥和虚拟机密钥都具有六个自定义属性。这两种密钥的 x-Vendorx-Productx-Product_Version 可能相同。这些属性在生成密钥时进行设置。根据密钥是否用于虚拟机或主机,可能会附加 x-Componentx-Identifierx-Name 属性。

密钥错误

如果将密钥从密钥服务器发送到 ESXi 主机时出错,vCenter Server 会在事件日志中针对以下事件生成一条消息:

  • 由于主机连接或主机支持问题,向 ESXi 主机添加密钥失败。
  • 由于密钥服务器中缺少密钥,从密钥服务器获取密钥失败。
  • 由于密钥服务器连接,从密钥服务器获取密钥失败。

解密加密的虚拟机

如果稍后要解密加密的虚拟机,请更改其存储策略。您可以更改虚拟机及所有磁盘的存储策略。如果要解密单独的组件,先解密选定的磁盘,然后通过更改虚拟机主页的存储策略解密虚拟机。解密每个组件都需要两种密钥。请参见解密加密虚拟机或虚拟磁盘