你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
重要
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 磁盘限制:不支持在 Linux OS 磁盘上禁用 ADE。 对于具有 ADE 加密 OS 磁盘的 Linux VM,必须使用新的 OS 磁盘创建新的 VM。
Windows ADE 加密模式:在 Windows VM 上,Azure 磁盘加密只能单独加密 OS 磁盘或所有磁盘(OS + 数据磁盘)。 无法仅加密 Windows VM 上的数据磁盘。
UDE 标志持久性:使用 Azure 磁盘加密加密的磁盘具有统一数据加密 (UDE) 标志,即使在解密后该标志仍然存在。 使用“复制”创建的快照和磁盘副本都会保留这个 UDE 标志。 迁移过程需要使用上传方法创建新的托管磁盘,并复制 VHD blob 数据。这会生成一个新的磁盘对象,而不包含来自源磁盘的任何元数据。
需要停机:迁移过程在执行磁盘操作和重新创建 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 上禁用加密并移除加密扩展”的步骤操作。 如果已加密操作系统磁盘,请参阅“迁移具有加密操作系统磁盘的 Linux 虚拟机”。
运行 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 VM,但对于 Linux 操作系统磁盘有一些特殊注意事项。
重要
从 Azure 复制托管磁盘时,需要添加 512 字节的偏移量。 这是因为 Azure 在报告磁盘大小时会省略页脚。 如果不这样做,复制将会失败。 以下脚本已经为你完成此操作。
如果要创建 OS 磁盘,请在 --hyper-v-generation <yourGeneration> 和 az disk create 之间添加内容。
# Set variables
sourceDiskName="MySourceDisk"
sourceRG="MyResourceGroup"
targetDiskName="MyTargetDisk"
targetRG="MyResourceGroup"
targetLocation="eastus"
# 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 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
主机加密提供了与 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 虚拟机,但对于无法就地解密其加密操作系统磁盘的 Linux VM 尤其重要。
有关数据迁移的指导,请参阅“将 VHD 上传到 Azure”和“使用 SCP 将文件复制到 Linux VM”。
已加入域的 VM 注意事项
如果 VM 是 Active Directory 域的成员,则需要在迁移过程中执行额外步骤:
预迁移域步骤
- 记录域成员资格:记录当前域、组织单位 (OU) 和任何特殊组成员资格
- 注意计算机帐户:需要管理 Active Directory 中的计算机帐户
- 备份特定于域的配置:保存任何特定于域的设置、组策略或证书
域删除过程
从域中删除:在删除原始 VM 之前,请使用以下方法之一将其从域中删除:
- 在 Windows 上使用
Remove-ComputerPowerShell cmdlet - 使用“系统属性”对话框更改为工作组
- 手动从 Active Directory 用户和计算机中删除计算机帐户
- 在 Windows 上使用
清理 Active Directory:删除任何孤立的计算机帐户或 DNS 条目
迁移后域重新加入
将新 VM 加入域:使用主机加密创建新 VM 后:
- 对于 Windows:使用
Add-ComputerPowerShell 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 无法启动
解决方案:检查所有磁盘是否已正确连接,以及操作系统磁盘是否已设置为启动磁盘
未启用主机加密
解决方案:请确认 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 或将托管磁盘复制到另一个区域