跨区域移动加密的 Azure VM
Azure 资源转移器帮助你在 Azure 区域之间移动 Azure 资源。 本文介绍如何使用 Azure 资源转移器将加密的 Azure 虚拟机 (VM) 移动到不同的 Azure 区域。
加密的 VM 可描述为:
- 具有启用了 Azure 磁盘加密的磁盘的 VM。 有关详细信息,请参阅使用 Azure 门户创建和加密 Windows 虚拟机。
- 使用客户管理的密钥 (CMK) 进行静态加密或服务器端加密的 VM。 有关详细信息,请参阅使用 Azure 门户为托管磁盘启用使用客户管理的密钥进行服务器端加密。
在本教程中,你将了解如何执行以下操作:
- 将加密的 Azure VM 及其依赖资源移到另一 Azure 区域。
注意
教程显示尝试方案的最快路径,并尽可能使用默认选项。
登录 Azure
如果没有 Azure 订阅,请在开始前创建一个试用版订阅,然后登录到 Azure 门户。
先决条件
在开始之前,请先验证是否具备以下条件:
要求 | 详细信息 |
---|---|
订阅权限 | 确保你对包含待移动资源的订阅具有“所有者”访问权限。 为什么需要“所有者”访问权限? 首次为 Azure 订阅中的特定源和目标对添加资源时,资源转移器将创建系统分配的托管标识(以前称为托管服务标识 (MSI))。 此标识受订阅信任。 用于添加资源的帐户需要有订阅的“所有者”权限,你才可创建标识并为其分配所需的角色(来源订阅中的“参与者”和“用户访问管理员”) 。 有关详细信息,请参阅 Azure 角色、Azure AD 角色和经典订阅管理员角色。 |
VM 支持 | 通过执行以下操作,确保要移动的 VM 受支持: |
密钥保管库要求(Azure 磁盘加密) | 如果已为 VM 启用 Azure 磁盘加密,则需要源区域和目标区域中的密钥保管库。 有关详细信息,请参阅创建密钥保管库。 对于源区域和目标区域中的密钥保管库,你需要以下权限: |
磁盘加密集(使用 CMK 的服务器端加密) | 如果使用的 VM 是利用 CMK 进行服务器端加密的,则需要源区域和目标区域中的磁盘加密集。 有关详细信息,请参阅创建磁盘加密集。 如果将硬件安全模块(HSM 密钥)用于客户管理的密钥,则不支持在区域之间移动。 |
目标区域配额 | 订阅需要足够的配额来创建要在目标区域中移动的资源。 如果没有配额,可请求上调限额。 |
目标区域费用 | 验证与要将 VM 移动到的目标区域关联的定价和费用。 使用定价计算器。 |
验证密钥保管库中的权限
如果要移动启用了 Azure 磁盘加密的 VM,则必须运行脚本。 执行脚本的用户应具有执行该操作的相应权限。 若要了解所需的权限,请参阅下表。 可以转到 Azure 门户中的密钥保管库,查找用于更改权限的选项。 在“设置”下,选择“访问策略” 。
如果没有用户权限,请选择“添加访问策略”,然后指定权限。 如果用户帐户已有策略,请在“用户”下,根据下表中的说明设置权限。
使用 Azure 磁盘加密的 Azure VM 可以有以下变体,你需要根据其相关组件设置权限。 VM 可能具有:
- 仅使用机密对磁盘进行加密的默认选项。
- 使用密钥加密密钥 (KEK) 增加了安全性。
源区域密钥保管库
对于执行脚本的用户,请设置针对以下组件的权限:
组件 | 所需权限 |
---|---|
机密 | Get 选择“机密权限”>“机密管理操作”,然后选择“Get”。 |
密钥 如果你使用的是 KEK,则除了针对机密的权限外,还需要有这些权限。 |
Get 和 Decrypt 选择“密钥权限”>“密钥管理操作”,然后选择“Get”。 在“加密操作”中,选择“Decrypt” 。 |
目标区域密钥保管库
在“访问策略”选项卡上,请确保启用“用于卷加密的 Azure 磁盘加密”。
对于执行脚本的用户,请设置针对以下组件的权限:
组件 | 所需权限 |
---|---|
机密 | 设置 选择“机密权限”>“机密管理操作”,然后选择“Set”。 |
密钥 如果你使用的是 KEK,则除了针对机密的权限外,还需要有这些权限。 |
Get、Create 和 Encrypt 选择“密钥权限”>“密钥管理操作”,然后选择“Get”和“Create”。 在“加密操作”中,选择“Encrypt” 。 |
除了上述权限外,在目标密钥保管库中,你还必须为资源转移器用来代表你访问 Azure 资源的托管系统标识添加权限。
向托管系统标识添加权限
若要为托管系统标识 (MSI) 添加权限,请执行以下步骤:
在“设置”下,选择“添加访问策略” 。
在“选择主体”中,搜索 MSI。 MSI 名称是
movecollection-<sourceregion>-<target-region>-<metadata-region>
。对于 MSI,请添加以下权限:
组件 所需权限 机密 Get 和 List
选择“机密权限”>“机密管理操作”,然后选择“Get”和“List”。密钥
如果你使用的是 KEK,则除了针对机密的权限外,还需要有这些权限。Get 和 List
选择“密钥权限”>“密钥管理操作”,然后选择“Get”和“List”。
将密钥复制到目标密钥保管库
使用提供的脚本,将加密机密和密钥从源密钥保管库复制到目标密钥保管库。
若要将密钥从源密钥保管库复制到目标密钥保管库,请执行以下步骤:
- 在 PowerShell 中运行该脚本。 建议使用最新的 PowerShell 版本。
- 具体而言,该脚本需要以下模块:
- Az.Compute
- Az.KeyVault(版本 3.0.0)
- Az.Accounts(版本 2.2.3)
要运行脚本,请执行以下操作:
在 GitHub 中打开该脚本。
将该脚本的内容复制到一个本地文件,并将其命名为“Copy-keys.ps1”。
运行该脚本。
登录到 Azure 门户。
在“用户输入”窗口下,选择源订阅、资源组、源 VM、目标位置以及磁盘和密钥加密的目标保管库。
使用“选择”按钮来运行脚本。
脚本运行完毕后,会出现一条消息,通知你 CopyKeys 已成功完成。
准备 VM
若要为移动准备 VM,请执行以下步骤:
- 通过检查来确保 VM 满足先决条件后,请确保已打开要移动的 VM。 所有需要在目标区域中可用的 VM 磁盘都必须在 VM 中附加并初始化。
- 为了确保 VM 具有最新的受信任的根证书和经过更新的证书吊销列表 (CRL),请执行以下操作:
- 在 Windows VM 上,安装最新的 Windows 更新。
- 在 Linux VM 上,遵循分发服务器指南,让计算机具有最新的证书和 CRL。
- 若要允许来自 VM 的出站连接,请执行以下操作之一:
选择要移动的资源
可以在所选源区域中的任何资源组中选择任何受支持的资源类型。 可以将资源移动到与源区域相同的订阅中的目标区域。 如果要更改订阅,可以在移动资源后进行更改。
若要选择资源,请执行以下操作:
在 Azure 门户上,搜索“资源转移器”。 在“服务”下,选择“Azure 资源转移器”。
在 Azure 资源转移器的“概述”窗格上,选择“跨区域移动” 。
在“移动资源”>“源 + 目标”选项卡上,执行以下操作:
- 选择源订阅和区域。
- 在“目标”下,选择要将 VM 移动到的区域,然后选择“下一步”。
在“要移动的资源”选项卡上,选择“选择资源”选项以打开包含可用 VM 列表的新选项卡。
在“选择资源”选项卡上,选择要移动的 VM。 如选择要移动的资源部分中所述,只可添加支持移动的资源。
注意
在本教程中,你将选择一个使用客户管理的密钥进行服务器端加密的 VM (rayne-vm),以及一个启用了磁盘加密的 VM (rayne-vm-ade)。
选择“完成”。
选择“要移动的资源”选项卡,然后选择“下一步”。
选择“查看”选项卡,然后检查源设置和目标设置。
选择“继续”,开始添加资源。
选择通知图标以跟踪进度。 成功完成该过程后,请在“通知”窗格中选择“已添加要移动的资源” 。
选择通知后,查看“跨区域”页上的资源。
注意
- 添加的资源会处于“准备已挂起”状态。
- VM 的资源组会自动添加。
- 如果将“目标配置”条目修改为使用目标区域中已存在的资源,资源状态就会被设置为“提交已挂起”,因为无需为该资源启动移动。
- 如果要删除已经添加的资源,操作方法将取决于你在移动过程中的进度。 有关详细信息,请参阅管理移动集合和资源组。
解决依赖项问题
若要在移动之前解决依赖项问题,请执行以下步骤:
添加依赖项后,会在后台进行验证。 如果看到“验证依赖项”按钮,请选择它以触发手动验证。
验证过程开始。
如果找到依赖项,请选择“添加依赖项”。
在“添加依赖项”窗格上,保留默认的“显示所有依赖项”选项。
- “显示所有依赖项”会遍历某个资源的所有直接和间接依赖项。 例如,对于某个 VM,该选项会显示 NIC、虚拟网络、网络安全组 (NSG) 等等。
- “只显示第一级依赖项”只会显示直接依赖项。 例如,对于某个 VM,该选项会显示 NIC,而不会显示虚拟网络。
选择需要添加的依赖资源,然后选择“添加依赖项”。
添加依赖项后,会在后台自动验证依赖项。 如果看到“验证依赖项”选项,请选择它以触发手动验证。
分配目标资源
必须手动分配与加密关联的目标资源。
如果要移动的 VM 启用了 Azure 磁盘加密,则目标区域中的密钥保管库将会显示为依赖项。 如果要移动使用 CMK 进行服务器端加密的 VM,则目标区域中的磁盘加密集会显示为依赖项。
由于本教程演示了如何移动启用了 Azure 磁盘加密且使用 CMK 的 VM,因此,目标密钥保管库和磁盘加密集都会显示为依赖项。
若要手动分配目标资源,请执行以下操作:
在磁盘加密集条目中,在“目标配置”列中选择“未分配的资源” 。
在“配置设置”中,选择目标磁盘加密集,然后选择“保存更改”。
可以保存并验证所修改的资源的依赖项,也可以只保存更改,然后一次性验证所有修改的内容。
在添加目标资源后,磁盘加密集的状态会更改为“提交移动已挂起”。
在密钥保管库条目中,选择“目标配置”列中的“未分配的资源” 。 在“配置设置”下,选择目标密钥保管库,然后保存更改。
在此阶段,磁盘加密集和密钥保管库状态会更改为“提交移动已挂起”。
若要提交并完成加密资源的移动过程,请执行以下操作:
- 在“跨区域”中,选择资源(磁盘加密集或密钥保管库),然后选择“提交移动”。
- 在“移动资源”中,选择“提交” 。
注意
提交移动后,资源状态更改为“删除源已挂起”。
准备要移动的资源
现在,加密资源和源资源组已移动,你可以准备移动当前状态为“准备已挂起”的其他资源。
在“跨区域”窗格中,再次验证移动,并解决任何存在的问题。
如果要在开始移动之前编辑目标设置,请在资源的“目标配置”列中选择链接,然后编辑设置。 如果编辑目标 VM 设置,则目标 VM 大小不应小于源 VM 大小。
为要移动的处于“准备已挂起”状态的资源选择“准备”。
在“准备资源”窗格中,选择“准备” 。
- 准备过程中,会在 VM 上安装 Azure Site Recovery 移动代理,以复制资源。
- VM 数据定期复制到目标区域。 这不会影响源 VM。
- 资源移动会为其他源资源生成 ARM 模板。
启动移动
你已准备好资源,现在可以启动移动。
在“跨区域”窗格上,选择状态为“启动移动挂起”的资源,然后选择“启动移动”。
在“移动资源”窗格中,选择“启动移动” 。
在通知栏中跟踪移动进度。
- 对于 VM,在目标区域中创建副本 VM。 源 VM 已关闭,并出现一段停机时间(通常为几分钟)。
- 资源转移器使用准备的 ARM 模板重新创建其他资源。 通常不会停机。
- 移动资源后,其状态更改为“提交移动已挂起”。
放弃或提交移动
初始移动后,你可以决定是提交移动,还是放弃它。
- 放弃:如果你在进行测试,并且不想实际移动源资源,则可能需要放弃移动。 放弃移动会使资源返回到“启动移动已挂起”状态。
- 提交:提交即完成移动到目标区域的操作。 提交源资源后,其状态更改为“删除源已挂起”,你可以决定是否要删除它。
放弃移动
若要放弃移动,请执行以下操作:
- 在“跨区域”窗格上,选择状态为“提交移动挂起”的资源,然后选择“放弃移动”。
- 在“放弃移动”窗格中,选择“放弃” 。
- 在通知栏中跟踪移动进度。
注意
放弃资源后,VM 状态更改为“启动移动已挂起”。
提交移动
若要完成移动过程,请通过执行以下操作提交移动:
注意
- 提交移动后,VM 停止复制。 源 VM 不受提交影响。
- 提交过程不会影响源网络资源。
- 提交移动后,资源状态更改为“删除源已挂起”。
在移动后配置设置
可以在完成移动过程后配置以下设置:
- 不会自动从 VM 卸载移动服务。 手动卸载它,或者如果你计划再次移动服务器,则保留它。
- 移动后,修改 Azure 基于角色的访问控制 (RBAC) 规则。
提交后删除源资源
移动后,可以选择删除源区域中的资源。
- 在“跨区域”窗格上,选择要删除的每个源资源,然后选择“删除源”。
- 在“删除源”中,查看需要删除的内容,并在“确认删除”中,键入“是” 。
注意
该操作不可逆,因此请仔细检查!
- 在键入“是”后,选择“删除源” 。
注意
在“资源移动”门户中,无法删除资源组、密钥保管库或 SQL Server 实例。 必须分别从每个资源的属性页中删除每个资源。
删除为移动创建的资源
移动后,你可以手动删除移动集合和在此过程中创建的 Site Recovery 资源。
- 默认情况下,移动集合处于隐藏状态。 若要查看它,你必须打开隐藏的资源。
- 必须先删除对缓存存储的锁定,才能删除缓存存储。
若要删除资源,请执行以下操作:
找到资源组
RegionMoveRG-<sourceregion>-<target-region>
中的资源。进行检查以确保已移动或删除源区域中的所有 VM 和其他源资源。 此步骤可确保没有挂起的资源使用它们。
删除资源:
- 移动集合名称:
movecollection-<sourceregion>-<target-region>
- 缓存存储帐户名称:
resmovecache<guid>
- 保管库名称:
ResourceMove-<sourceregion>-<target-region>-GUID
- 移动集合名称:
后续步骤
详细了解如何将 Azure SQL 数据库和弹性池移到另一区域。