跨区域移动加密的 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 进行服务器端加密的,则需要源区域和目标区域中的磁盘加密集。 有关详细信息,请参阅创建磁盘加密集

    如果将硬件安全模块(HSM 密钥)用于客户管理的密钥,则不支持在区域之间移动。
    目标区域配额 订阅需要足够的配额来创建要在目标区域中移动的资源。 如果没有配额,可请求上调限额
    目标区域费用 验证与要将 VM 移动到的目标区域关联的定价和费用。 使用定价计算器

    验证密钥保管库中的权限

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

    密钥设置窗格中“访问策略”链接的屏幕截图。

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

    使用 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、目标位置以及磁盘和密钥加密的目标保管库。

      用于输入脚本值的“用户输入”窗口的屏幕截图。

    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 资源转移器”。

      Azure 门户中“Azure 资源转移器”的搜索结果的屏幕截图。

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

      “跨区域移动”按钮的屏幕截图,该按钮用于添加要移动到另一个区域的资源。

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

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

      用于选择源区域和目标区域的页面。

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

      “移动资源”窗格和“选择资源”按钮的屏幕截图。

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

      用于选择要移动的 VM 的“选择资源”窗格的屏幕截图。

      注意

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

    6. 选择“完成”。

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

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

      用于检查源和目标设置的窗格的屏幕截图。

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

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

      用于确认已成功添加资源的“通知”窗格的屏幕截图。

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

      状态为“准备已挂起”的已添加资源的屏幕截图。

    注意

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

    解决依赖项问题

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

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

      显示“验证依赖项”按钮的屏幕截图。

      验证过程开始。

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

      “添加依赖项”按钮的屏幕截图。

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

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

      依赖项列表和“添加依赖项”按钮的屏幕截图。

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

      用于重新验证依赖项的窗格的屏幕截图。

    分配目标资源

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

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

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

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

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

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

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

      用于保存目标区域中的更改的“目标配置”窗格的屏幕截图。

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

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

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

    用于准备其他资源的窗格的屏幕截图。

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

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

    注意

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

    准备要移动的资源

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

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

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

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

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

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

    注意

    准备好资源后,资源状态更改“启动移动已挂起”。 “准备资源”窗格的屏幕截图,其中显示资源处于“启动移动已挂起”状态。

    启动移动

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

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

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

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

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

    放弃或提交移动

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

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

    放弃移动

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

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

    注意

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

    提交移动

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

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

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

      要提交以完成移动的资源列表的屏幕截图。

    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 数据库和弹性池移到另一区域。