다음을 통해 공유

从 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 标志。 迁移需要使用 Upload 方法创建新的托管磁盘,并复制 VHD Blob 数据,这会创建新的磁盘对象,而无需源磁盘中的任何元数据。

  • 需要停机:迁移过程需要 VM 停机才能执行磁盘作和 VM 娱乐。

  • 已加入域的 VM:如果 VM 是 Active Directory 域的一部分,则需要执行更多步骤:

    • 在删除之前,必须先从域中删除原始 VM
    • 创建新 VM 后,必须重新加入域
    • 对于 Linux VM,可以使用 Azure AD 扩展完成域加入

    有关详细信息,请参阅 什么是Microsoft Entra 域服务?

先决条件

开始迁移之前:

  1. 备份数据:在开始迁移过程之前创建所有关键数据的备份。

  2. 测试过程:如果可能,请先在非生产 VM 上测试迁移过程。

  3. 准备加密资源:确保 VM 大小支持主机加密。 大多数当前的 VM 大小都支持此功能。 有关 VM 大小要求的详细信息,请参阅 在主机上使用加密启用端到端加密

  4. 文档配置:记录当前 VM 配置,包括网络设置、扩展和附加资源。

迁移步骤

以下迁移步骤适用于大多数方案,每个作系统都有特定差异。

重要

无法就地解密具有加密 OS 磁盘的 Linux VM。 对于这些 VM,必须使用新的 OS 磁盘创建新的 VM 并迁移数据。 查看以下常规过程后,请参阅 “迁移具有加密 OS 磁盘的 Linux VM ”部分。

禁用 Azure 磁盘加密

第一步是尽可能禁用现有的 Azure 磁盘加密:

创建新的托管磁盘

创建不携带 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"

确认主机上的加密正常工作后:

  1. 测试 VM 功能以确保应用程序正常工作
  2. 验证数据是否可访问且完好无损
  3. 对迁移感到满意时,请删除原始资源:
# 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 不同。

  1. 创建启用了主机加密的新 VM

    az vm create \
      --resource-group "MyResourceGroup" \
      --name "MyVM-New" \
      --image "Ubuntu2204" \
      --encryption-at-host true \
      --admin-username "azureuser" \
      --generate-ssh-keys
    
  2. 对于数据迁移选项:

    • 对于应用程序数据:使用 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 后:

  1. 配置新 VM 以匹配原始环境

    • 设置相同的网络配置
    • 安装相同的应用程序和服务
    • 应用相同的安全设置
  2. 在解除原始 VM 授权之前进行彻底测试

此方法适用于 Windows 和 Linux VM,但对于具有无法就地解密的加密 OS 磁盘的 Linux VM 尤其重要。

有关数据迁移的指导,请参阅:使用 SCP 将 VHD 上传到 Azure 并将 文件复制到 Linux VM

已加入域的 VM 注意事项

如果 VM 是 Active Directory 域的成员,则需要在迁移过程中执行其他步骤:

预迁移域步骤

  1. 文档域成员身份:记录当前域、组织单位(OU)和任何特殊组成员身份
  2. 注意计算机帐户:需要管理 Active Directory 中的计算机帐户
  3. 备份特定于域的配置:保存任何特定于域的设置、组策略或证书

域删除过程

  1. 从域中删除:在删除原始 VM 之前,请使用以下方法之一将其从域中删除:

    • Remove-Computer Windows 上使用 PowerShell cmdlet
    • 使用“系统属性”对话框更改为工作组
    • 从 Active Directory 用户和计算机手动删除计算机帐户
  2. 清理 Active Directory:删除任何孤立的计算机帐户或 DNS 条目

迁移后域重新加入

  1. 将新 VM 加入域:使用主机加密创建新 VM 后:

    • 对于 Windows:使用 Add-Computer PowerShell cmdlet 或系统属性
    • 对于 Linux:使用 Azure AD 域加入扩展或手动配置
  2. 还原域设置:重新应用任何特定于域的配置、组策略或证书

  3. 验证域功能:测试域身份验证、组策略应用程序和网络资源访问

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 票证和缓存凭据
  • 某些域集成应用程序可能需要重新配置
  • 规划迁移期间域服务的潜在暂时性丢失

迁移后验证

完成迁移后,验证主机上的加密是否正常工作:

  1. 检查主机状态的加密:验证主机加密是否已启用:

    az vm show --resource-group "MyResourceGroup" --name "MyVM-New" --query "securityProfile.encryptionAtHost"
    
  2. 测试 VM 功能:确保应用程序和服务正常工作。

  3. 验证磁盘加密:确认磁盘是否已正确加密:

    Get-AzDisk -ResourceGroupName "MyResourceGroup" -DiskName "MyVM-OS-New" | Select-Object Name, DiskState
    
  4. 监视性能:在迁移前后比较性能,以确认预期的改进。

有关加密验证的详细信息,请参阅 使用主机加密启用端到端加密

清理行动

成功迁移和验证后:

  1. 删除旧 VM:删除原始 ADE 加密的 VM

  2. 删除旧磁盘:删除原始加密磁盘

  3. 更新 Key Vault 访问策略:其他磁盘加密解决方案使用标准 Key Vault 授权机制。 如果不再需要 Azure 磁盘加密的 Key Vault,请更新其访问策略以禁用特殊磁盘加密设置:

    az keyvault update --name "YourKeyVaultName" --resource-group "YourResourceGroup" --enabled-for-disk-encryption false
    

  1. 清理资源:删除在迁移期间创建的任何临时资源
  2. 更新文档:更新基础结构文档以反映迁移到主机上的加密

常见问题和解决方案

VM 大小不支持主机加密

解决方案:检查 支持的 VM 大小列表 ,并根据需要调整 VM 大小

迁移后 VM 无法启动

解决方案:检查是否已正确附加所有磁盘,并将 OS 磁盘设置为启动磁盘

主机加密未启用

解决方案:验证 VM 是否已使用 --encryption-at-host true 参数创建,并且订阅是否支持此功能

性能问题仍然存在

解决方案:验证主机上的加密是否已正确启用,并且 VM 大小是否支持预期性能。

后续步骤