将启用了 Azure 磁盘加密的虚拟机复制到另一个 Azure 区域

本文介绍如何将启用了 Azure 磁盘加密 (ADE) 的 Azure VM 从一个 Azure 区域复制到另一个 Azure 区域。

注意

对于运行 Windows 操作系统的 VM,Site Recovery 当前支持 ADE(无论是否使用 Microsoft Entra ID)。 对于 Linux 操作系统,我们仅支持不使用 Microsoft Entra ID 的 ADE。 此外,对于运行 ADE 1.1(不使用 Microsoft Entra ID)的计算机,VM 必须使用托管磁盘。 不支持包含非托管磁盘的 VM。 如果从 ADE 0.1(使用 Microsoft Entra ID)切换到 ADE 1.1,则需要在启用 ADE 1.1 后对 VM 先禁用复制,然后再启用复制。

所需的用户权限

Site Recovery 要求用户具有在目标区域中创建密钥保管库以及将源区域密钥保管库中的密钥复制到目标区域密钥保管库的权限。

若要从 Azure 门户为支持磁盘加密的 VM 启用复制,用户需要对源区域和目标区域密钥保管库具有以下权限。

  • 密钥保管库权限

    • 列出、创建和获取
  • 密钥保管库机密权限

    • 机密管理操作
      • 获取、列出和设置
  • Key Vault 密钥权限(只有当 VM 使用“密钥加密密钥”来加密磁盘加密密钥时才需要)

    • 密钥管理操作
      • 获取、列出和创建
    • 加密操作
      • 解密和加密

若要管理权限,请在门户中转到 Key Vault 资源。 添加用户所需的权限。 以下示例演示如何启用对源区域中 Key Vault ContosoWeb2Keyvault 的权限。

  1. 转到“主页”>“Keyvaults”>“ContosoWeb2KeyVault”>“访问策略”。

    “Key Vault 权限”窗口

  2. 可以发现目前没有任何用户权限。 选择“添加新订阅”。 输入用户和权限信息。

    keyvault 权限

如果启用灾难恢复 (DR) 的用户无权复制密钥,则拥有相应权限的安全管理员可使用以下脚本将加密机密和密钥复制到目标区域。

若要排查权限问题,请参阅本文稍后所述的 Key Vault 权限问题

注意

若要通过门户对启用了磁盘加密的 VM 启用复制,至少需要对 Key Vault、机密和密钥拥有“列出”权限。

使用 PowerShell 脚本将磁盘加密密钥复制到 DR 区域

  1. 打开“CopyKeys”原始脚本代码

  2. 将该脚本复制到一个文件并将其命名为 Copy-keys.ps1

  3. 打开 Windows PowerShell 应用程序,并转到该文件所保存到的文件夹。

  4. 执行 Copy-keys.ps1。

  5. 提供用于登录的 Azure 凭据。

  6. 选择你的 VM 的 Azure 订阅

  7. 等待资源组加载,然后选择 VM 的资源组

  8. 从显示的列表中选择 VM。 该列表只显示启用了磁盘加密的 VM。

  9. 选择目标位置

    • 磁盘加密 Key Vault
    • 密钥加密 Key Vault

    默认情况下,Site Recovery 会在目标区域中创建新的 Key Vault, 保管库的名称包含基于源 VM 磁盘加密密钥的“asr”后缀。 如果已存在 Site Recovery 创建的 Key Vault,则会重复使用它。 根据需要从列表中选择不同的 Key Vault。

注意

或者,可以下载密钥,将其导入辅助密钥保管库区域。 然后,可以修改副本磁盘以使用密钥。

启用复制

使用以下过程将已启用 Azure 磁盘加密的 VM 复制到另一个 Azure 区域。 我们可以假设主要 Azure 区域是“中国东部”,次要区域是“中国北部”。

  1. 在保管库 >“Site Recovery”页的“Azure 虚拟机”下,选择“启用复制”。

  2. 请在“启用复制”页的“源”下,执行以下操作:

    • 区域:选择要在其中保护虚拟机的 Azure 区域。 例如,源位置是“中国北部”。
    • 订阅:选择源虚拟机所属的订阅。 这可以是恢复服务保管库所在同一 Microsoft Entra 租户中的任何订阅。
    • 资源组:选择源虚拟机所属的资源组。 所选资源组中要保护的所有 VM 会在下一步骤中列出。
    • 虚拟机部署模型:选择源计算机的 Azure 部署模型。
    • 可用性区域之间的灾难恢复:如果想在虚拟机上执行区域性灾难恢复,请选择“是”。

    屏幕截图突出显示了配置复制所需的字段。

  3. 选择“下一页”。

  4. 在“虚拟机”中选择要复制的每个 VM。 只能选择可以启用复制的计算机。 最多可以选择 10 个 VM。 然后,选择“下一步”。

    屏幕截图突出显示了选择虚拟机的位置。

  5. 在“复制设置”中,可以配置以下设置:

    1. 在“位置和资源组”下:

      • 目标位置:选择必须将源虚拟机数据复制到其中的位置。 根据所选计算机的位置,Site Recovery 将提供合适的目标区域列表。 我们建议将目标位置与恢复服务保管库位置保持相同。

      • 目标订阅:选择用于灾难恢复的目标订阅。 默认情况下,目标订阅将与源订阅相同。

      • 目标资源组:选择所有复制的虚拟机所属的资源组。

        • 默认情况下,Site Recovery 会在目标区域中创建一个名称带 asr 后缀的新资源组。
        • 如果 Site recovery 创建的资源组已存在,则会重复使用它。
        • 可以自定义资源组设置。
        • 目标资源组的位置可以是除托管源 VM 区域以外的任何 Azure 区域。

        注意

        还可以通过选择“新建”来创建新的目标资源组。

        位置和资源组的屏幕截图。

    2. 在“网络”下:

      • 故障转移虚拟网络:选择故障转移虚拟网络。

        注意

        还可以通过选择“新建”来创建新的故障转移虚拟网络。

      • 故障转移子网:选择故障转移子网。

        “网络”的屏幕截图。

    3. 存储:选择“查看/编辑存储配置”。 “自定义目标设置”页会打开。

      “存储”的屏幕截图。

      • 副本托管磁盘:Site Recovery 在目标区域中创建新的副本托管磁盘,用于生成和源 VM 的托管磁盘存储类型一致(标准或高级)的镜像磁盘。
      • 缓存存储:Site Recovery 需要源区域中称为“缓存存储”的额外存储帐户。 在被复制到目标位置之前,源 VM 上发生的所有更改都会被跟踪并发送到缓存存储帐户。
    4. 可用性选项:为目标区域中的 VM 选择适当的可用性选项。 如果已存在 Site Recovery 创建的可用性集,将会重复使用它。 选择“查看/编辑可用性选项”来查看或编辑可用性选项。

      注意

      • 在配置目标可用性集时,请为不同大小的 VM 配置不同的可用性集。
      • 在启用复制以后,不能更改可用性类型 - 单一实例、可用性集或可用性区域。 必须先禁用复制,然后再启用复制,才能更改可用性类型。

      可用性选项的屏幕截图。

    5. 产能预留:利用产能预留,可以在恢复区域中购买产能,然后故障转移到该产能。 你可以创建新的产能预留组,也可以使用某个现有的组。 选择“查看或编辑产能预留组分配”,以修改产能预留设置。 在触发故障转移时,将会在已分配的产能预留组中创建新 VM。

      产能预留的屏幕截图。

    6. 加密设置:选择“查看/编辑配置”以配置磁盘加密和密钥加密密钥保管库。

      • 磁盘加密 Key Vault:默认情况下,Site Recovery 会在目标区域中创建新的 Key Vault, 其名称包含基于源 VM 磁盘加密密钥的 asr 后缀。 如果已存在 Azure Site Recovery 创建的 Key Vault,将会重复使用它。
      • 密钥加密 Key Vault:默认情况下,Site Recovery 会在目标区域中创建新的 Key Vault, 其名称包含基于源 VM 密钥加密密钥的 asr 后缀。 如果已存在 Azure Site Recovery 创建的 Key Vault,将会重复使用它。

      加密设置的屏幕截图。

  6. 选择“下一页”。

  7. 在“管理”中,执行以下操作:

    1. 在“复制策略”下,
      • 复制策略:选择复制策略。 定义恢复点保留期历史记录和应用一致性快照频率的设置。 默认情况下,Site Recovery 创建一个新的复制策略,默认设置为 24 小时的恢复点保留期。
      • 复制组:创建复制组将 VM 一起复制,以生成多 VM 一致性的恢复点。 请注意,启用多 VM 一致性可能会影响工作负荷性能。仅当计算机运行相同的工作负荷且你需要跨多个计算机的一致性时,才应使用该设置。
    2. 在“扩展设置”下,
      • 选择“更新设置”和“自动化帐户”。

    屏幕截图显示“管理”选项卡。

  8. 选择“下一页”。

  9. 在“查看”中查看 VM 设置,然后选择“启用复制”。

    屏幕截图显示“查看”选项卡。

注意

在初始复制期间,VM 状态刷新可能需要一段时间,但不显示确切的进度。 单击“刷新”可查看最新状态。

更新目标 VM 加密设置

在以下情况下,需要更新目标 VM 的加密设置:

  • 你已在 VM 上启用 Site Recovery 复制。 后来,你在源 VM 上启用了磁盘加密。
  • 你已在 VM 上启用 Site Recovery 复制。 后来,你在源 VM 上更改了磁盘加密密钥或密钥加密密钥。

由于上述原因,密钥在源和目标之间未同步。 因此,需要将密钥复制到目标,并通过以下方法更新 Azure Site Recovery 元数据存储:

  • Portal
  • REST API
  • PowerShell

注意

Azure Site Recovery 不支持在处于受保护状态时轮换加密虚拟机的密钥。 如果轮换密钥,则必须禁用并重新启用复制。

在 Azure 门户中更新目标 VM 加密设置

如果在 VM 上使用 Site Recovery 并在以后启用磁盘加密,则目标设置中可能没有任何密钥保管库。 必须在目标中添加新的密钥保管库。

如果在目标设置中使用密钥保管库(例如 KV1),可以使用目标区域中的其他密钥保管库来更改密钥。 可以选择与原始密钥保管库 KV1 不同的现有密钥保管库或使用新的密钥保管库。 由于 Azure Site Recovery 不允许就地更改密钥,因此必须在目标区域中使用不同的密钥保管库。

在本示例中,假设使用必要的权限创建新的空密钥保管库 KV2。 然后,可以使用以下步骤更新保管库:

  1. 在 Azure 门户中,转到“恢复服务保管库”。
  2. 选择“复制的项”>“属性”>“计算”
  3. 从菜单中选择 KV2 以更新目标密钥保管库。 更新目标密钥保管库的屏幕截图。
  4. 选择“保存”,使用新的密钥/机密将源密钥复制到新的目标密钥保管库 KV2,并更新 Azure Site Recovery 元数据。

    注意

    创建新的密钥保管库可能会产生成本影响。 如果想要使用以前使用的原始目标密钥保管库(KV1),可以在使用其他密钥保管库完成上述步骤后执行此操作。
    使用其他密钥保管库更新保管库后,若要使用原始目标密钥保管库(KV1),请重复步骤 1 到 4,然后在目标密钥保管库中选择 KV1。 这会复制 KV1 中的新密钥/机密,并将其用于目标。

使用 REST API 更新目标 VM 加密设置

  1. 必须使用 Copy-Keys 脚本将密钥复制到目标保管库。
  2. 使用 Replication Protected Items - Update Rest API 更新 Azure Site Recovery 元数据。

使用 PowerShell 更新目标 VM 加密设置

  1. 使用 Copy-Keys 脚本将密钥复制到目标保管库。
  2. 使用 Set-AzRecoveryServicesAsrReplicationProtectedItem 命令更新 Azure Site Recovery 元数据。

排查执行 Azure 到 Azure 的 VM 复制期间出现的 Key Vault 权限问题

Azure Site Recovery 至少需要源区域密钥保管库的读取权限和目标区域密钥保管库的写入权限,才能读取机密并将其复制到目标区域密钥保管库。

原因 1: 你没有源区域密钥保管库的“GET”权限,无法读取密钥。
如何修复: 无论你是否是订阅管理员,都必须具有密钥保管库的 get 权限,这一点很重要。

  1. 转到源区域密钥保管库,本例中为“ContososourceKeyvault”>“访问策略”
  2. 在“选择主体”下添加你的用户名,例如:“dradmin@contoso.com”
  3. 在“密钥权限”下,选择 GET
  4. 在“机密权限”下,选择 GET
  5. 保存访问策略

原因 2: 你对目标区域密钥保管库没有写入密钥所需的权限。

例如:你尝试复制源区域中包含 Key Vault ContososourceKeyvault 的 VM。 你对源区域中的 Key Vault 拥有所有权限。 但在保护期间,你选择了已创建的、但没有权限的 Key Vault ContosotargetKeyvault。 发生错误。

目标密钥保管库所需的权限

如何修复: 转到“主页”>“Keyvaults”>“ContosotargetKeyvault”>“访问策略”并添加相应的权限。

后续步骤