重要
Azure 磁盘加密计划于 2028 年 9 月 15 日停用。 在该日期之前,可以继续使用 Azure 磁盘加密,而不会中断。 2028 年 9 月 15 日,已启用 ADE 的工作负荷将继续运行,但 VM 重启后加密磁盘将无法解锁,从而导致服务中断。
使用 主机端加密 用于新 VM。 所有已启用 ADE 的 VM(包括备份)必须在停用日期之前迁移到主机上的加密,以避免服务中断。 有关详细信息,请参阅 从 Azure 磁盘加密迁移到主机加密 。
本文提供将虚拟机从 Azure 磁盘加密(ADE)迁移到主机加密的分步指南。 迁移过程需要创建新的磁盘和 VM,因为不支持就地转换。
迁移概述
Azure 磁盘加密(ADE)使用 BitLocker(Windows)或 dm-crypt(Linux)加密 VM 中的数据,而主机加密会加密 VM 主机级别的数据,而无需消耗 VM CPU 资源。 主机加密通过为所有 VM 数据(包括临时磁盘、缓存和计算和存储之间的数据流)提供端到端加密来增强 Azure 的默认服务器端加密(SSE)。
有关详细信息,请参阅 托管磁盘加密选项概述 ,以及 使用主机加密启用端到端加密。
迁移限制和注意事项
在开始迁移过程之前,请查看影响迁移策略的以下重要限制和注意事项:
没有就地迁移:不能直接将 ADE 加密的磁盘转换为主机上的加密。 迁移需要创建新的磁盘和 VM。
Linux OS 磁盘限制:Azure不支持在 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。
已加入域的虚拟机:如果虚拟机属于 Active Directory 域,则需要执行更多步骤:
- 在删除之前,请从域中删除原始 VM。
- 创建新 VM 后,将其重新加入域。
- 对于 Linux VM,请手动将 VM 加入托管域。
有关详细信息,请参阅 什么是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 禁用命令后,Azure 门户中的 VM 加密状态会立即更改为“SSE + PMK”。 但是,OS 级别的实际解密过程需要一段时间,具体取决于加密的数据量。 在继续下一步之前,必须验证 OS 级解密是否已完成。
对于 Windows VM:
- 以管理员身份打开命令提示符并运行:
manage-bde -status - 验证所有卷是否显示“完全解密”状态。
- 确认所有加密卷的解密百分比均显示为 100%。
对于 Linux VM(仅数据磁盘):
- 运行:
sudo cryptsetup status /dev/mapper/<device-name>。 - 验证加密设备是否不再处于活动状态。
- 运行
lsblk以确认未保留任何加密映射。
等待完全解密,然后继续进行磁盘迁移,以确保数据完整性。
创建新的托管磁盘
创建不携带 ADE 加密元数据的新磁盘。 该过程适用于 Windows 和 Linux 虚拟机,但对于 Linux 操作系统磁盘有一些特定注意事项。
重要
从Azure复制托管磁盘时,添加 512 字节的偏移量。 Azure 在报告磁盘大小时会省略页脚。 如果未添加此偏移量,则复制将失败。 以下脚本会为你添加此偏移量。
如果要创建 OS 磁盘,请将 --hyper-v-generation <yourGeneration> 添加到 az disk create 中。
# Set variables
sourceDiskName="MySourceDisk"
sourceRG="MyResourceGroup"
targetDiskName="MyTargetDisk"
targetRG="MyResourceGroup"
targetLocation="chinanorth2"
# For OS disks, specify either "Windows" or "Linux"
# For data disks, omit the targetOS variable and --os-type parameter
targetOS="Windows"
# Get source disk size in bytes
sourceDiskSizeBytes=$(az disk show -g $sourceRG -n $sourceDiskName --query '[diskSizeBytes]' -o tsv)
# Create a new empty target disk with upload capability
az disk create -g $targetRG -n $targetDiskName -l $targetLocation --os-type $targetOS --for-upload --upload-size-bytes $(($sourceDiskSizeBytes+512)) --sku standard_lrs
# Generate SAS URIs for both disks
targetSASURI=$(az disk grant-access -n $targetDiskName -g $targetRG --access-level Write --duration-in-seconds 86400 --query [accessSas] -o tsv)
sourceSASURI=$(az disk grant-access -n $sourceDiskName -g $sourceRG --access-level Read --duration-in-seconds 86400 --query [accessSas] -o tsv)
# Copy the disk data by using AzCopy
azcopy copy $sourceSASURI $targetSASURI --blob-type PageBlob
# Revoke SAS access when complete
az disk revoke-access -n $sourceDiskName -g $sourceRG
az disk revoke-access -n $targetDiskName -g $targetRG
此方法在不带 Azure 磁盘加密元数据(UDE 标志)的情况下创建新磁盘,这对于干净迁移至关重要。
使用加密创建新 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 以匹配原始环境。
- 设置相同的网络配置。
- 安装相同的应用程序和服务。
- 应用相同的安全设置。
在停用原始虚拟机之前,请进行彻底测试。
此方法适用于 Windows 和 Linux VM,但对于具有无法就地解密的加密 OS 磁盘的 Linux VM 尤其重要。
有关数据迁移的指导,请参阅使用 SCP 将 VHD 上传到Azure并将文件复制到 Linux VM。
AVD 主机池的推荐方法
对于 Azure 虚拟桌面(AVD)环境,推荐的方法是重新部署会话主机,而不是尝试进行磁盘级迁移。
对于共用主机和个人主机池,支持的方法是将启用了 Azure 磁盘加密 (ADE) 的会话主机替换为启用了主机加密的新虚拟机。
步骤
创建新的黄金映像。
- 确保未启用Azure 磁盘加密。
- 验证应用程序和配置。
部署新的会话主机。
- 使用 Azure 计算库或自定义映像。
- 在 VM 创建时在主机上启用加密。 有关详细信息,请参阅 使用主机加密启用端到端加密。
将新会话主机添加到主机池。
- 确保会话主机正常运行并接受连接。
验证工作负荷。
- 确认用户配置文件访问权限,例如FSLogix。
- 验证应用程序和策略。
清空已启用 ADE 的现有会话主机。
- 启用清空模式以阻止新会话。
- 等待现有会话结束或手动注销用户。
移除并停用旧会话主机。
- 从主机池中删除会话主机。
- 删除关联的虚拟机和磁盘。
已加入域的虚拟机注意事项
如果 VM 是Active Directory域的成员,则需要在迁移过程中执行更多步骤:
预迁移域步骤
- 文档域成员身份:记录当前域、组织单位(OU)和任何特殊组成员身份。
- 注意计算机帐户:在Active Directory中管理计算机帐户。
- 备份特定于域的配置:保存任何特定于域的设置、组策略或证书。
域名移除流程
从域中删除:在删除原始 VM 之前,请使用以下方法之一将其从域中删除。
- 在 Windows 上使用
Remove-ComputerPowerShell 命令。 - 使用“系统属性”对话框更改为工作组。
- 从“Active Directory 用户和计算机”中手动删除计算机账户。
- 在 Windows 上使用
清理Active Directory:删除任何孤立的计算机帐户或 DNS 条目。
迁移后域重新加入
将新 VM 加入域:使用主机加密创建新 VM 后,将其加入域。
-
Windows:使用
Add-ComputerPowerShell cmdlet 或系统属性。 - Linux:对托管域的域服务使用手动配置。
-
Windows:使用
还原域设置:重新应用任何特定于域的配置、组策略或证书。
验证域功能:测试域身份验证、组策略应用程序和网络资源访问。
Linux 域加入
对于使用 Microsoft Entra 域服务 的 Linux VM,请使用手动 Linux 域加入步骤将 VM 加入托管域。 有关详细信息,请参阅将 Ubuntu Linux 虚拟机加入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。
删除旧磁盘:删除原始加密磁盘。
更新 密钥保管库 访问策略:其他磁盘加密解决方案使用标准 密钥保管库 授权机制。 如果不再需要 Azure 磁盘加密的 密钥保管库,请更新其访问策略以禁用特殊磁盘加密设置:
az keyvault update --name "YourKeyVaultName" --resource-group "YourResourceGroup" --enabled-for-disk-encryption false
- 清理资源:删除在迁移期间创建的任何临时资源。
- 更新文档:更新基础结构文档,以反映迁移到主机上的加密。
常见问题和解决方案
VM 大小不支持主机端加密
解决方案:检查 支持的 VM 大小列表 ,并在必要时调整 VM 大小。
迁移后 VM 无法启动
解决方案:检查是否已正确附加所有磁盘,并将 OS 磁盘设置为启动磁盘。
主机加密未启用
解决方案:验证 VM 是否已使用 --encryption-at-host true 参数创建,并且订阅是否支持此功能。
性能问题仍然存在
解决方案:验证主机上的加密是否已正确启用,并且 VM 大小是否支持预期性能。