请遵循虚拟机加密最佳做法,以避免以后(例如,在生成 vm-support 包时)遇到问题。
开始使用虚拟机加密的最佳做法
要避免在使用虚拟机加密时出现问题,请遵循以下常规最佳做法。
- 不要加密任何 vCenter Server Appliance 虚拟机。
- 如果 ESXi 主机发生故障,请尽快检索支持包。要生成使用密码的支持包或解密核心转储,主机密钥必须可用。如果重新引导主机,主机密钥可能会更改。如果发生这种情况,则无法再生成包含密码的支持包,或使用主机密钥解密支持包中的核心转储。
- 精心管理密钥提供程序名称。如果已在使用的密钥服务器的密钥提供程序名称发生更改,则使用此密钥服务器中的密钥加密的虚拟机在打开电源或进行注册时将进入锁定状态。在这种情况下,请从 vCenter Server 中移除该密钥服务器,然后使用最初所用的密钥提供程序名称重新添加。
- 不要编辑 VMX 文件和 VMDK 描述符文件。这些文件包含加密包。所做更改可能会使虚拟机不可恢复,并且可能无法修复恢复问题。
- vSphere 虚拟机加密过程先对主机上的数据进行加密,然后再将数据写入存储。以这种方式加密虚拟机时,后端存储功能(如去重、压缩、复制等)的有效性可能会受到影响。
- 如果使用多层加密,例如,vSphere 虚拟机加密和客户机内加密(BitLocker、dm-crypt 等),则虚拟机的整体性能可能会受到影响,因为加密过程会使用额外的 CPU 和内存资源。
- 确保使用 vSphere 虚拟机加密进行加密的虚拟机的复制副本有权在恢复站点访问加密密钥。对于标准密钥提供程序,在 vSphere 外部作为密钥管理系统设计的一部分进行处理。对于 vSphere Native Key Provider,请确保存在 Native Key Provider 密钥的备份副本,并受到保护以防丢失。有关详细信息,请参见备份 vSphere Native Key Provider。
- 加密会占用大量 CPU。AES-NI 可以大幅提高加密性能。在您的 BIOS 中启用 AES-NI。
加密核心转储的最佳做法
请遵循以下最佳做法以避免在想要检查核心转储以诊断问题时遇到问题。
- 建立有关核心转储的策略。核心转储会进行加密,因为它们可能包含敏感信息(例如密钥)。解密核心转储时,将其视为敏感信息进行处理。ESXi 核心转储可能包含用于 ESXi 主机以及该主机上的虚拟机的密钥。考虑在解密核心转储后更改主机密钥并重新加密已加密的虚拟机。您可以使用 vSphere API 执行这两项任务。
有关详细信息,请参见vSphere 虚拟机加密和核心转储。
- 在收集 vm-support 包时,始终应使用密码。通过 vSphere Client 或使用 vm-support 命令生成支持包时,您可以指定密码。
密码会重新加密使用内部密钥的核心转储,以便使用基于该密码的密钥。您可以在以后使用该密码来解密支持包中可能包含的任何加密核心转储。使用密码选项不会影响未加密的核心转储和日志。
- 在创建 vm-support 包期间指定的密码不会保留在 vSphere 组件中。您需要负责跟踪支持包的密码。
- 在更改主机密钥前,生成包含密码的 vm-support 包。稍后可以使用该密码访问可能已使用旧主机密钥进行加密的任何核心转储。
密钥生命周期管理最佳做法
- 您负责实施可为密钥服务器的可用性提供保障的策略。
如果密钥服务器不可用,则要求 vCenter Server 从密钥服务器请求密钥的虚拟机操作将无法进行。这意味着正在运行的虚拟机将继续运行,您可以打开和关闭这些虚拟机的电源,还可以重新配置这些虚拟机。但是,无法将虚拟机重定位到不具有密钥信息的主机。
大多数关键服务器解决方案都包括高可用性功能。可以使用 vSphere Client 或 API 指定密钥提供程序和关联的密钥服务器。
注: 从版本 7.0 Update 2 开始,即使密钥服务器暂时脱机或不可用,加密的虚拟机和虚拟 TPM 也可以继续运行。 ESXi 主机可以保留加密密钥,以继续执行加密和 vTPM 操作。请参见 ESXi 主机上的 vSphere 密钥持久性。 - 您需要负责跟踪密钥,以及在现有虚拟机的密钥不处于“活动”状态时执行修复。
KMIP 标准定义了以下密钥状态。
- 活动前
- 活动
- 已取消激活
- 已泄漏
- 已破坏
- 已破坏且已泄漏
“vSphere 虚拟机加密”仅使用活动密钥进行加密。如果密钥处于“活动前”状态,“vSphere 虚拟机加密”会激活该密钥。如果密钥处于“已取消激活”、“已泄漏”、“已破坏”或“已破坏且已泄漏”状态,则无法使用该密钥对虚拟机或虚拟磁盘进行加密。
如果密钥处于其他状态,使用这些密钥的虚拟机将继续工作。克隆或迁移操作能否成功取决于密钥是否已存在于主机上。- 如果密钥位于目标主机上,则即使该密钥在密钥服务器上不处于“活动”状态,操作也会成功。
- 如果所需的虚拟机密钥和虚拟磁盘密钥不位于目标主机上,则 vCenter Server 必须从密钥服务器获取密钥。如果密钥处于“已取消激活”、“已泄漏”、“已破坏”或“已破坏且已泄漏”状态,则 vCenter Server 会显示错误,并且操作将不成功。
如果密钥已存在于主机上,则克隆或迁移操作将成功。如果 vCenter Server 必须从密钥服务器提取密钥,则操作将失败。
如果不处于“活动”状态,请使用 API 执行重新生成密钥操作。请参见《vSphere Web Services SDK 编程指南》。
- 制定密钥轮换策略,使密钥在特定时间后停用并滚动。
- 可信密钥提供程序:更改可信密钥提供程序的主密钥。
- vSphere Native Key Provider:更改 vSphere Native Key Provider 的
key_id
。
备份和还原最佳做法
- 并非所有备份架构均受支持。请参见虚拟机加密互操作性。
- 请为还原操作设置策略。由于备份始终以明文方式进行,因此请计划在还原完成后立即对虚拟机进行加密。您可以指定在还原操作的过程中对虚拟机进行加密。如果可能,请在还原过程中对虚拟机进行加密,以避免暴露敏感信息。要更改与虚拟机关联的任何磁盘的加密策略,请更改该磁盘的存储策略。
- 由于虚拟机主页文件已加密,请确保加密密钥在还原时可用。
加密性能的最佳做法
- 加密性能取决于 CPU 和存储速度。
- 对现有虚拟机进行加密所需的时间比在创建虚拟机期间对其进行加密更多。请尽可能在创建虚拟机期间对其进行加密。
样本存储策略的最佳做法
有关自定义存储策略的详细信息,请参见《vSphere 存储》文档。
移除加密密钥的最佳做法
要确保从集群中移除加密密钥,请在删除、取消注册加密虚拟机或将加密虚拟机移至另一个 vCenter Server 后,重新引导集群中的 ESXi 主机。