跨区域移动加密的 Azure VM

Azure 资源转移器帮助你在 Azure 区域之间移动 Azure 资源。 本文介绍如何使用 Azure 资源转移器将加密的 Azure 虚拟机 (VM) 移动到不同的 Azure 区域。

加密的 VM 可描述为:

在本教程中,你将了解如何执行以下操作:

  • 将加密的 Azure VM 及其依赖资源移到另一 Azure 区域。

注意

教程显示尝试方案的最快路径,并尽可能使用默认选项。

登录 Azure

如果没有 Azure 订阅,请在开始前创建一个试用版订阅,然后登录到 Azure 门户

先决条件

在开始之前,请先验证是否具备以下条件:

要求 详细信息
订阅权限 确保你对包含待移动资源的订阅具有“所有者”访问权限。

为什么需要“所有者”访问权限? 首次为 Azure 订阅中的特定源和目标对添加资源时,资源转移器将创建系统分配的托管标识(以前称为托管服务标识 (MSI))。 此标识受订阅信任。 用于添加资源的帐户需要有订阅的“所有者”权限,你才可创建标识并为其分配所需的角色(来源订阅中的“参与者”和“用户访问管理员”) 。 有关详细信息,请参阅 Azure 角色、Azure AD 角色和经典订阅管理员角色
VM 支持 通过执行以下操作,确保要移动的 VM 受支持:
  • 验证支持的 Windows VM。
  • 验证支持的 Linux VM 和内核版本。
  • 查看支持的计算存储网络设置。
  • 密钥保管库要求(Azure 磁盘加密) 如果已为 VM 启用 Azure 磁盘加密,则需要源区域和目标区域中的密钥保管库。 有关详细信息,请参阅创建密钥保管库

    对于源区域和目标区域中的密钥保管库,你需要以下权限:
  • 密钥权限:密钥管理操作(Get、List)和加密操作(Decrypt 和 Encrypt)
  • 机密权限:机密管理操作(Get、List 和 Set)
  • 证书(List 和 Get)
  • 磁盘加密集(使用 CMK 的服务器端加密) 如果使用的 VM 是利用 CMK 进行服务器端加密的,则需要源区域和目标区域中的磁盘加密集。 有关详细信息,请参阅创建磁盘加密集

    目标区域配额 订阅需要足够的配额来创建要在目标区域中移动的资源。 如果没有配额,可请求上调限额
    目标区域费用 验证与要将 VM 移动到的目标区域关联的定价和费用。 使用定价计算器

    验证密钥保管库中的权限

    如果要移动启用了 Azure 磁盘加密的 VM,则必须运行脚本。 执行脚本的用户应具有执行该操作的相应权限。 若要了解所需的权限,请参阅下表。 可以转到 Azure 门户中的密钥保管库,查找用于更改权限的选项。 在“设置”下,选择“访问策略” 。

    Screenshot of the 'Access policies' link on the key vault Settings pane.

    如果没有用户权限,请选择“添加访问策略”,然后指定权限。 如果用户帐户已有策略,请在“用户”下,根据下表中的说明设置权限。

    使用 Azure 磁盘加密的 Azure VM 可以有以下变体,你需要根据其相关组件设置权限。 VM 可能具有:

    源区域密钥保管库

    对于执行脚本的用户,请设置针对以下组件的权限:

    组件 所需权限
    机密 Get
    选择“机密权限”>“机密管理操作”,然后选择“Get”。
    密钥
    如果你使用的是 KEK,则除了针对机密的权限外,还需要有这些权限。
    Get 和 Decrypt
    选择“密钥权限”>“密钥管理操作”,然后选择“Get”。 在“加密操作”中,选择“Decrypt” 。

    目标区域密钥保管库

    在“访问策略”选项卡上,请确保启用“用于卷加密的 Azure 磁盘加密”。

    对于执行脚本的用户,请设置针对以下组件的权限:

    组件 所需权限
    机密 设置
    选择“机密权限”>“机密管理操作”,然后选择“Set”。
    密钥
    如果你使用的是 KEK,则除了针对机密的权限外,还需要有这些权限。
    Get、Create 和 Encrypt
    选择“密钥权限”>“密钥管理操作”,然后选择“Get”和“Create”。 在“加密操作”中,选择“Encrypt” 。

    除了上述权限外,在目标密钥保管库中,你还必须为资源转移器用来代表你访问 Azure 资源的托管系统标识添加权限。

    向托管系统标识添加权限

    若要为托管系统标识 (MSI) 添加权限,请执行以下步骤:

    1. 在“设置”下,选择“添加访问策略” 。

    2. 在“选择主体”中,搜索 MSI。 MSI 名称是 movecollection-<sourceregion>-<target-region>-<metadata-region>

    3. 对于 MSI,请添加以下权限:

      组件 所需权限
      机密 Get 和 List
      选择“机密权限”>“机密管理操作”,然后选择“Get”和“List”。
      密钥
      如果你使用的是 KEK,则除了针对机密的权限外,还需要有这些权限。
      Get 和 List
      选择“密钥权限”>“密钥管理操作”,然后选择“Get”和“List”。

    将密钥复制到目标密钥保管库

    使用提供的脚本,将加密机密和密钥从源密钥保管库复制到目标密钥保管库。

    若要将密钥从源密钥保管库复制到目标密钥保管库,请执行以下步骤:

    • 在 PowerShell 中运行该脚本。 建议使用最新的 PowerShell 版本。
    • 具体而言,该脚本需要以下模块:
      • Az.Compute
      • Az.KeyVault(版本 3.0.0)
      • Az.Accounts(版本 2.2.3)

    要运行脚本,请执行以下操作:

    1. 在 GitHub 中打开该脚本

    2. 将该脚本的内容复制到一个本地文件,并将其命名为“Copy-keys.ps1”。

    3. 运行该脚本。

    4. 登录到 Azure 门户。

    5. 在“用户输入”窗口下,选择源订阅、资源组、源 VM、目标位置以及磁盘和密钥加密的目标保管库。

      Screenshot of the 'User Inputs' window for entering the script values.

    6. 使用“选择”按钮来运行脚本。

      脚本运行完毕后,会出现一条消息,通知你 CopyKeys 已成功完成。

    准备 VM

    若要为移动准备 VM,请执行以下步骤:

    1. 通过检查来确保 VM 满足先决条件后,请确保已打开要移动的 VM。 所有需要在目标区域中可用的 VM 磁盘都必须在 VM 中附加并初始化。
    2. 为了确保 VM 具有最新的受信任的根证书和经过更新的证书吊销列表 (CRL),请执行以下操作:
      • 在 Windows VM 上,安装最新的 Windows 更新。
      • 在 Linux VM 上,遵循分发服务器指南,让计算机具有最新的证书和 CRL。
    3. 若要允许来自 VM 的出站连接,请执行以下操作之一:
      • 如果使用基于 URL 的防火墙代理来控制出站连接,请允许访问 URL
      • 如果使用网络安全组 (NSG) 规则来控制出站连接,请创建这些服务标记规则

    选择要移动的资源

    可以在所选源区域中的任何资源组中选择任何受支持的资源类型。 可以将资源移动到与源区域相同的订阅中的目标区域。 如果要更改订阅,可以在移动资源后进行更改。

    若要选择资源,请执行以下操作:

    1. 在 Azure 门户上,搜索“资源转移器”。 在“服务”下,选择“Azure 资源转移器”。

      Screenshot of search results for Azure Resource Mover in the Azure portal.

    2. 在 Azure 资源转移器的“概述”窗格上,选择“跨区域移动” 。

      Screenshot of the 'Move across regions' button for adding resources to move to another region.

    3. 在“移动资源”>“源 + 目标”选项卡上,执行以下操作:

      1. 选择源订阅和区域。
      2. 在“目标”下,选择要将 VM 移动到的区域,然后选择“下一步”。

      Page to select source and destination region..

    4. 在“要移动的资源”选项卡上,选择“选择资源”选项以打开包含可用 VM 列表的新选项卡。

      Screenshot of the 'Move resources' pane and 'Select resources' button.].

    5. 在“选择资源”选项卡上,选择要移动的 VM。 如选择要移动的资源部分中所述,只可添加支持移动的资源。

      Screenshot of the 'Select resources' pane for selecting VMs to move.

      注意

      在本教程中,你将选择一个使用客户管理的密钥进行服务器端加密的 VM (rayne-vm),以及一个启用了磁盘加密的 VM (rayne-vm-ade)。

    6. 选择“完成”。

    7. 选择“要移动的资源”选项卡,然后选择“下一步”。

    8. 选择“查看”选项卡,然后检查源设置和目标设置。

      Screenshot of the pane for reviewing source and destination settings.

    9. 选择“继续”,开始添加资源。

    10. 选择通知图标以跟踪进度。 成功完成该过程后,请在“通知”窗格中选择“已添加要移动的资源” 。

      Screenshot of the 'Notifications' pane for confirming that resources were added successfully.

    11. 选择通知后,查看“跨区域”页上的资源。

      Screenshot of added resources with a 'Prepare pending' status.

    注意

    • 添加的资源会处于“准备已挂起”状态。
    • VM 的资源组会自动添加。
    • 如果将“目标配置”条目修改为使用目标区域中已存在的资源,资源状态就会被设置为“提交已挂起”,因为无需为该资源启动移动。
    • 如果要删除已经添加的资源,操作方法将取决于你在移动过程中的进度。 有关详细信息,请参阅管理移动集合和资源组

    解决依赖项问题

    若要在移动之前解决依赖项问题,请执行以下步骤:

    1. 添加依赖项后,会在后台进行验证。 如果看到“验证依赖项”按钮,请选择它以触发手动验证。

      Screenshot showing the 'Validate dependencies' button.

      验证过程开始。

    2. 如果找到依赖项,请选择“添加依赖项”。

      Screenshot of the 'Add dependencies' button.

    3. 在“添加依赖项”窗格上,保留默认的“显示所有依赖项”选项。

      • “显示所有依赖项”会遍历某个资源的所有直接和间接依赖项。 例如,对于某个 VM,该选项会显示 NIC、虚拟网络、网络安全组 (NSG) 等等。
      • “只显示第一级依赖项”只会显示直接依赖项。 例如,对于某个 VM,该选项会显示 NIC,而不会显示虚拟网络。
    4. 选择需要添加的依赖资源,然后选择“添加依赖项”。

      Screenshot of the dependencies list and the 'Add dependencies' button.

    5. 添加依赖项后,会在后台自动验证依赖项。 如果看到“验证依赖项”选项,请选择它以触发手动验证。

      Screenshot of the pane for revalidating the dependencies.

    分配目标资源

    必须手动分配与加密关联的目标资源。

    如果要移动的 VM 启用了 Azure 磁盘加密,则目标区域中的密钥保管库将会显示为依赖项。 如果要移动使用 CMK 进行服务器端加密的 VM,则目标区域中的磁盘加密集会显示为依赖项。

    由于本教程演示了如何移动启用了 Azure 磁盘加密且使用 CMK 的 VM,因此,目标密钥保管库和磁盘加密集都会显示为依赖项。

    若要手动分配目标资源,请执行以下操作:

    1. 在磁盘加密集条目中,在“目标配置”列中选择“未分配的资源” 。

    2. 在“配置设置”中,选择目标磁盘加密集,然后选择“保存更改”。

    3. 可以保存并验证所修改的资源的依赖项,也可以只保存更改,然后一次性验证所有修改的内容。

      Screenshot of the 'Destination configuration' pane for saving changes in the destination region.

      在添加目标资源后,磁盘加密集的状态会更改为“提交移动已挂起”。

    4. 在密钥保管库条目中,选择“目标配置”列中的“未分配的资源” 。 在“配置设置”下,选择目标密钥保管库,然后保存更改。

    在此阶段,磁盘加密集和密钥保管库状态会更改为“提交移动已挂起”。

    Screenshot of the pane for preparing other resources.

    若要提交并完成加密资源的移动过程,请执行以下操作:

    1. 在“跨区域”中,选择资源(磁盘加密集或密钥保管库),然后选择“提交移动”。
    2. 在“移动资源”中,选择“提交” 。

    注意

    提交移动后,资源状态更改为“删除源已挂起”。

    准备要移动的资源

    现在,加密资源和源资源组已移动,你可以准备移动当前状态为“准备已挂起”的其他资源。

    1. 在“跨区域”窗格中,再次验证移动,并解决任何存在的问题。

    2. 如果要在开始移动之前编辑目标设置,请在资源的“目标配置”列中选择链接,然后编辑设置。 如果编辑目标 VM 设置,则目标 VM 大小不应小于源 VM 大小。

    3. 为要移动的处于“准备已挂起”状态的资源选择“准备”。

    4. 在“准备资源”窗格中,选择“准备” 。

      • 准备过程中,会在 VM 上安装 Azure Site Recovery 移动代理,以复制资源。
      • VM 数据定期复制到目标区域。 这不会影响源 VM。
      • 资源移动会为其他源资源生成 ARM 模板。

    注意

    准备好资源后,资源状态更改“启动移动已挂起”。 Screenshot of the 'Prepare resources' pane, showing the resources in 'Initiate move pending' status.

    启动移动

    你已准备好资源,现在可以启动移动。

    1. 在“跨区域”窗格上,选择状态为“启动移动挂起”的资源,然后选择“启动移动”。

    2. 在“移动资源”窗格中,选择“启动移动” 。

    3. 在通知栏中跟踪移动进度。

      • 对于 VM,在目标区域中创建副本 VM。 源 VM 已关闭,并出现一段停机时间(通常为几分钟)。
      • 资源转移器使用准备的 ARM 模板重新创建其他资源。 通常不会停机。
      • 移动资源后,其状态更改为“提交移动已挂起”。

      Screenshot of a list of resources with a 'Commit move pending' status.

    放弃或提交移动

    初始移动后,你可以决定是提交移动,还是放弃它。

    • 放弃:如果你在进行测试,并且不想实际移动源资源,则可能需要放弃移动。 放弃移动会使资源返回到“启动移动已挂起”状态。
    • 提交:提交即完成移动到目标区域的操作。 提交源资源后,其状态更改为“删除源已挂起”,你可以决定是否要删除它。

    放弃移动

    若要放弃移动,请执行以下操作:

    1. 在“跨区域”窗格上,选择状态为“提交移动挂起”的资源,然后选择“放弃移动”。
    2. 在“放弃移动”窗格中,选择“放弃” 。
    3. 在通知栏中跟踪移动进度。

    注意

    放弃资源后,VM 状态更改为“启动移动已挂起”。

    提交移动

    若要完成移动过程,请通过执行以下操作提交移动:

    1. 在“跨区域”窗格上,选择状态为“提交移动挂起”的资源,然后选择“提交移动”。

    2. 在“提交资源”窗格中,选择“提交” 。

      Screenshot of a list of resources to commit resources to finalize the move.

    3. 跟踪通知栏中的提交进度。

    注意

    • 提交移动后,VM 停止复制。 源 VM 不受提交影响。
    • 提交过程不会影响源网络资源。
    • 提交移动后,资源状态更改为“删除源已挂起”。

    在移动后配置设置

    可以在完成移动过程后配置以下设置:

    • 不会自动从 VM 卸载移动服务。 手动卸载它,或者如果你计划再次移动服务器,则保留它。
    • 移动后,修改 Azure 基于角色的访问控制 (RBAC) 规则。

    提交后删除源资源

    移动后,可以选择删除源区域中的资源。

    1. 在“跨区域”窗格上,选择要删除的每个源资源,然后选择“删除源”。
    2. 在“删除源”中,查看需要删除的内容,并在“确认删除”中,键入“是” 。

      注意

      该操作不可逆,因此请仔细检查!

    3. 在键入“是”后,选择“删除源” 。

    注意

    在“资源移动”门户中,无法删除资源组、密钥保管库或 SQL Server 实例。 必须分别从每个资源的属性页中删除每个资源。

    删除为移动创建的资源

    移动后,你可以手动删除移动集合和在此过程中创建的 Site Recovery 资源。

    • 默认情况下,移动集合处于隐藏状态。 若要查看它,你必须打开隐藏的资源。
    • 必须先删除对缓存存储的锁定,才能删除缓存存储。

    若要删除资源,请执行以下操作:

    1. 找到资源组 RegionMoveRG-<sourceregion>-<target-region> 中的资源。

    2. 进行检查以确保已移动或删除源区域中的所有 VM 和其他源资源。 此步骤可确保没有挂起的资源使用它们。

    3. 删除资源:

      • 移动集合名称:movecollection-<sourceregion>-<target-region>
      • 缓存存储帐户名称:resmovecache<guid>
      • 保管库名称:ResourceMove-<sourceregion>-<target-region>-GUID

    后续步骤

    详细了解如何将 Azure SQL 数据库和弹性池移到另一区域。