本文提供将虚拟机从 Azure 磁盘加密(ADE)迁移到主机加密的分步指南。 迁移过程需要创建新的磁盘和 VM,因为不支持就地转换。
迁移概述
Azure 磁盘加密(ADE)使用 BitLocker(Windows)或 dm-crypt(Linux)加密 VM 中的数据,而在主机加密时加密 VM 主机级别的数据,而无需消耗 VM CPU 资源。 主机加密通过为所有 VM 数据(包括临时磁盘、缓存和计算和存储之间的数据流)提供端到端加密来增强 Azure 的默认服务器端加密(SSE)。
有关详细信息,请参阅 托管磁盘加密选项概述 ,以及 使用主机加密启用端到端加密。
迁移限制和注意事项
在开始迁移过程之前,请注意影响迁移策略的以下重要限制和注意事项:
无就地迁移:不能直接将 ADE 加密的磁盘转换为主机上的加密。 迁移需要创建新的磁盘和 VM。
Linux OS 磁盘限制:不支持在 Linux OS 磁盘上禁用 ADE。 对于具有 ADE 加密 OS 磁盘的 Linux VM,必须使用新的 OS 磁盘创建新的 VM。
Windows ADE 加密模式:在 Windows VM 上,Azure 磁盘加密只能单独加密 OS 磁盘或所有磁盘(OS + 数据磁盘)。 无法仅加密 Windows VM 上的数据磁盘。
UDE 标志持久性:使用 Azure 磁盘加密加密加密的磁盘具有统一数据加密(UDE)标志,即使在解密后仍会保留。 使用“复制”选项的快照和磁盘副本都保留此 UDE 标志。 迁移需要使用 Upload 方法创建新的托管磁盘,并复制 VHD Blob 数据,这会创建新的磁盘对象,而无需源磁盘中的任何元数据。
需要停机:迁移过程需要 VM 停机才能执行磁盘作和 VM 娱乐。
已加入域的 VM:如果 VM 是 Active Directory 域的一部分,则需要执行更多步骤:
- 在删除之前,必须先从域中删除原始 VM
- 创建新 VM 后,必须重新加入域
- 对于 Linux VM,可以使用 Azure AD 扩展完成域加入
有关详细信息,请参阅 什么是Microsoft Entra 域服务?
先决条件
开始迁移之前:
备份数据:在开始迁移过程之前创建所有关键数据的备份。
测试过程:如果可能,请先在非生产 VM 上测试迁移过程。
准备加密资源:确保 VM 大小支持主机加密。 大多数当前的 VM 大小都支持此功能。 有关 VM 大小要求的详细信息,请参阅 在主机上使用加密启用端到端加密。
文档配置:记录当前 VM 配置,包括网络设置、扩展和附加资源。
迁移步骤
以下迁移步骤适用于大多数方案,每个作系统都有特定差异。
重要
无法就地解密具有加密 OS 磁盘的 Linux VM。 对于这些 VM,必须使用新的 OS 磁盘创建新的 VM 并迁移数据。 查看以下常规过程后,请参阅 “迁移具有加密 OS 磁盘的 Linux VM ”部分。
禁用 Azure 磁盘加密
第一步是尽可能禁用现有的 Azure 磁盘加密:
- Windows:按照禁用加密中的说明作 ,在 Windows 上删除加密扩展
- Linux:如果 仅加密数据磁盘 ,请按照 禁用加密并在 Linux 上删除加密扩展。 如果 OS 磁盘已加密,请参阅 迁移具有加密 OS 磁盘的 Linux VM。
创建新的托管磁盘
创建不携带 ADE 加密元数据的新磁盘。 此过程适用于 Windows 和 Linux VM,Linux OS 磁盘有一些特定的注意事项。
# Get the source disk ID
SOURCE_DISK_ID=$(az disk show --resource-group "MyResourceGroup" --name "MySourceDisk" --query "id" -o tsv)
# Create a new disk from the source disk
az disk create --resource-group "MyResourceGroup" --name "MyTargetDisk"
--source "$SOURCE_DISK_ID" --upload-type "Copy"
# For OS disks, specify --os-type "Linux" or --os-type "Windows"
注释
此方法在不带 Azure 磁盘加密元数据(UDE 标志)的情况下创建新磁盘,这对于干净迁移至关重要。
重要说明:从 Azure 复制托管磁盘时,将 512 字节添加到磁盘大小,以考虑到 Azure 报告磁盘大小时省略的页脚。
使用加密创建新 VM
使用新创建的磁盘和所选加密方法创建新的 VM。
可以根据安全要求从多个加密选项中进行选择。 本文提供在主机上创建具有加密的新 VM 的步骤,这是最常见的迁移路径。 托管磁盘加密选项概述中介绍了其他加密选项。
使用主机加密创建新 VM
主机加密提供最接近于 Azure 磁盘加密覆盖范围的加密,本节对此进行了介绍。
对于 OS 磁盘:
# For Windows OS disks
az vm create
--resource-group "MyResourceGroup"
--name "MyVM-New"
--os-type "Windows"
--attach-os-disk "MyTargetDisk"
--encryption-at-host true
# For Linux OS disks
# az vm create
# --resource-group "MyResourceGroup"
# --name "MyVM-New"
# --os-type "Linux"
# --attach-os-disk "MyTargetDisk"
# --encryption-at-host true
对于数据磁盘:
# Enable encryption at host on the VM
az vm update
--resource-group "MyResourceGroup"
--name "MyVM-New"
--encryption-at-host true
# Attach the newly created data disk
az vm disk attach
--resource-group "MyResourceGroup"
--vm-name "MyVM-New"
--name "MyTargetDisk"
验证和配置新磁盘
使用主机加密创建新 VM 后,需要验证并正确配置作系统的磁盘。
对于 Windows VM:
- 验证是否已正确分配磁盘字母
- 检查应用程序是否可以正确访问磁盘
- 更新引用特定磁盘 ID 的任何应用程序或脚本
对于 Linux VM:
- 使用新磁盘 UUID 进行更新
/etc/fstab
- 将数据磁盘装载到正确的装入点
# Get UUIDs of all disks
sudo blkid
# Mount all disks defined in fstab
sudo mount -a
Windows 和 Linux 可能需要特定于应用程序或工作负载的其他配置步骤。
验证加密和清理
验证主机上的加密是否已在 Windows 和 Linux VM 上正确配置。
# Check encryption at host status
az vm show --resource-group "MyResourceGroup" --name "MyVM-New" --query "securityProfile.encryptionAtHost"
确认主机上的加密正常工作后:
- 测试 VM 功能以确保应用程序正常工作
- 验证数据是否可访问且完好无损
- 对迁移感到满意时,请删除原始资源:
# Delete the original VM
az vm delete --resource-group "MyResourceGroup" --name "MyVM-Original" --yes
# Delete the original disk
az disk delete --resource-group "MyResourceGroup" --name "MySourceDisk" --yes
迁移具有加密 OS 磁盘的 Linux VM
由于无法在 Linux OS 磁盘上禁用加密,因此此过程与 Windows 不同。
创建启用了主机加密的新 VM
az vm create \ --resource-group "MyResourceGroup" \ --name "MyVM-New" \ --image "Ubuntu2204" \ --encryption-at-host true \ --admin-username "azureuser" \ --generate-ssh-keys
对于数据迁移选项:
- 对于应用程序数据:使用 SCP、rsync 或其他文件传输方法复制数据
- 对于配置:复制重要的配置文件和设置
- 对于复杂应用程序:使用适用于应用程序的备份/还原过程
# Example of using SCP to copy files from source to new VM az vm run-command invoke -g MyResourceGroup -n MyVM-Original --command-id RunShellScript \ --scripts "scp -r /path/to/data azureuser@new-vm-ip:/path/to/destination"
创建新 VM 后:
配置新 VM 以匹配原始环境
- 设置相同的网络配置
- 安装相同的应用程序和服务
- 应用相同的安全设置
在解除原始 VM 授权之前进行彻底测试
此方法适用于 Windows 和 Linux VM,但对于具有无法就地解密的加密 OS 磁盘的 Linux VM 尤其重要。
有关数据迁移的指导,请参阅:使用 SCP 将 VHD 上传到 Azure 并将 文件复制到 Linux VM。
已加入域的 VM 注意事项
如果 VM 是 Active Directory 域的成员,则需要在迁移过程中执行其他步骤:
预迁移域步骤
- 文档域成员身份:记录当前域、组织单位(OU)和任何特殊组成员身份
- 注意计算机帐户:需要管理 Active Directory 中的计算机帐户
- 备份特定于域的配置:保存任何特定于域的设置、组策略或证书
域删除过程
从域中删除:在删除原始 VM 之前,请使用以下方法之一将其从域中删除:
- 在
Remove-Computer
Windows 上使用 PowerShell cmdlet - 使用“系统属性”对话框更改为工作组
- 从 Active Directory 用户和计算机手动删除计算机帐户
- 在
清理 Active Directory:删除任何孤立的计算机帐户或 DNS 条目
迁移后域重新加入
将新 VM 加入域:使用主机加密创建新 VM 后:
- 对于 Windows:使用
Add-Computer
PowerShell cmdlet 或系统属性 - 对于 Linux:使用 Azure AD 域加入扩展或手动配置
- 对于 Windows:使用
还原域设置:重新应用任何特定于域的配置、组策略或证书
验证域功能:测试域身份验证、组策略应用程序和网络资源访问
Linux 域加入
对于 Linux VM,可以使用 Azure AD 域服务 VM 扩展:
az vm extension set \
--resource-group "MyResourceGroup" \
--vm-name "MyLinuxVM-New" \
--name "AADSSHLoginForLinux" \
--publisher "Microsoft.Azure.ActiveDirectory"
有关详细信息,请参阅 什么是Microsoft Entra 域服务?
重要的域注意事项
- 新 VM 具有不同的计算机 SID,可能会影响某些应用程序
- 必须刷新 Kerberos 票证和缓存凭据
- 某些域集成应用程序可能需要重新配置
- 规划迁移期间域服务的潜在暂时性丢失
迁移后验证
完成迁移后,验证主机上的加密是否正常工作:
检查主机状态的加密:验证主机加密是否已启用:
az vm show --resource-group "MyResourceGroup" --name "MyVM-New" --query "securityProfile.encryptionAtHost"
测试 VM 功能:确保应用程序和服务正常工作。
验证磁盘加密:确认磁盘是否已正确加密:
Get-AzDisk -ResourceGroupName "MyResourceGroup" -DiskName "MyVM-OS-New" | Select-Object Name, DiskState
监视性能:在迁移前后比较性能,以确认预期的改进。
有关加密验证的详细信息,请参阅 使用主机加密启用端到端加密。
清理行动
成功迁移和验证后:
删除旧 VM:删除原始 ADE 加密的 VM
删除旧磁盘:删除原始加密磁盘
更新 Key Vault 访问策略:其他磁盘加密解决方案使用标准 Key Vault 授权机制。 如果不再需要 Azure 磁盘加密的 Key Vault,请更新其访问策略以禁用特殊磁盘加密设置:
az keyvault update --name "YourKeyVaultName" --resource-group "YourResourceGroup" --enabled-for-disk-encryption false
- 清理资源:删除在迁移期间创建的任何临时资源
- 更新文档:更新基础结构文档以反映迁移到主机上的加密
常见问题和解决方案
VM 大小不支持主机加密
解决方案:检查 支持的 VM 大小列表 ,并根据需要调整 VM 大小
迁移后 VM 无法启动
解决方案:检查是否已正确附加所有磁盘,并将 OS 磁盘设置为启动磁盘
主机加密未启用
解决方案:验证 VM 是否已使用 --encryption-at-host true
参数创建,并且订阅是否支持此功能
性能问题仍然存在
解决方案:验证主机上的加密是否已正确启用,并且 VM 大小是否支持预期性能。
后续步骤
- 托管磁盘加密选项概述
- 使用主机加密启用端到端加密 - Azure 门户
- 使用主机加密启用端到端加密 - Azure PowerShell
- 使用主机加密启用端到端加密 - Azure CLI
- Azure 磁盘存储的服务器端加密
- 适用于 Windows VM 的 Azure 磁盘加密
- 适用于 Linux VM 的 Azure 磁盘加密
- Azure 磁盘加密常见问题解答
- 将 VHD 上传到 Azure 或将托管磁盘复制到另一个区域
- 适用于 Linux VM 的 Azure 磁盘加密
- Azure 磁盘加密常见问题解答
- 将 VHD 上传到 Azure 或将托管磁盘复制到另一个区域
- Azure 磁盘加密常见问题解答
- 将 VHD 上传到 Azure 或将托管磁盘复制到另一个区域
- 适用于 Linux VM 的 Azure 磁盘加密
- Azure 磁盘加密常见问题解答
- 将 VHD 上传到 Azure 或将托管磁盘复制到另一个区域