使用客户管理的密钥创建加密的映像版本

适用于:✔️ Linux VM ✔️ Windows VM ✔️ 灵活规模集 ✔️ 统一规模集

Azure Compute Gallery(以前称为共享映像库)的映像存储为快照。 这些映像通过服务器端 256 位加密 AES 加密自动加密。 服务器端加密也符合 FIPS 140-2 规范。 有关加密模块基础 Azure 托管磁盘的详细信息,请参阅加密 API:下一代

可以使用平台管理的密钥加密映像,也可以使用你自己的密钥。 还可以结合使用这两项功能进行双重加密。 如果你选择管理使用自己的密钥进行的加密,可以指定客户管理的密钥,用于加密和解密映像中的所有磁盘。

通过客户管理的密钥进行的服务器端加密使用 Azure Key Vault。 可以在 Azure Key Vault 中生成新的 RSA 密钥。

先决条件

本文要求你已在要复制映像的每个区域中设置了磁盘加密:

限制

使用客户管理的密钥加密 Azure Compute Gallery 中的映像时存在以下限制:

  • 加密密钥集必须与映像位于同一订阅中。

  • 加密密钥集是区域资源,因此每个区域都需要不同的加密密钥集。

  • 使用自己的密钥加密映像后,不能重新改用平台管理的密钥来加密这些映像。

  • VM 映像版本源当前不支持客户管理的密钥加密。

  • 门户中不支持某些功能,例如复制 SSE+CMK 映像、从 SSE+CMK 加密磁盘创建映像等。

PowerShell

若要指定映像版本的磁盘加密集,请将 New-AzGalleryImageVersion-TargetRegion 参数配合使用:


$sourceId = <ID of the image version source>

$osDiskImageEncryption = @{DiskEncryptionSetId='subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/diskEncryptionSets/myDESet'}

$dataDiskImageEncryption1 = @{DiskEncryptionSetId='subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/diskEncryptionSets/myDESet1';Lun=1}

$dataDiskImageEncryption2 = @{DiskEncryptionSetId='subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/diskEncryptionSets/myDESet2';Lun=2}

$dataDiskImageEncryptions = @($dataDiskImageEncryption1,$dataDiskImageEncryption2)

$encryption1 = @{OSDiskImage=$osDiskImageEncryption;DataDiskImages=$dataDiskImageEncryptions}

$region1 = @{Name='China North';ReplicaCount=1;StorageAccountType=Standard_LRS;Encryption=$encryption1}

$ChinaEast2osDiskImageEncryption = @{DiskEncryptionSetId='subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/diskEncryptionSets/myChinaEast2DESet'}

$ChinaEast2dataDiskImageEncryption1 = @{DiskEncryptionSetId='subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/diskEncryptionSets/myChinaEast2DESet1';Lun=1}

$ChinaEast2dataDiskImageEncryption2 = @{DiskEncryptionSetId='subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/diskEncryptionSets/myChinaEast2DESet2';Lun=2}

$ChinaEast2DataDiskImageEncryptions = @($ChinaEast2dataDiskImageEncryption1,$ChinaEast2dataDiskImageEncryption2)

$encryption2 = @{OSDiskImage=$ChinaEast2osDiskImageEncryption;DataDiskImages=$ChinaEast2DataDiskImageEncryptions}

$region2 = @{Name='China East 2';ReplicaCount=1;StorageAccountType=Standard_LRS;Encryption=$encryption2}

$targetRegion = @($region1, $region2)


# Create the image
New-AzGalleryImageVersion `
   -ResourceGroupName $rgname `
   -GalleryName $galleryName `
   -GalleryImageDefinitionName $imageDefinitionName `
   -Name $versionName -Location $location `
   -SourceImageId $sourceId `
   -ReplicaCount 2 `
   -StorageAccountType Standard_LRS `
   -PublishingProfileEndOfLifeDate '2020-12-01' `
   -TargetRegion $targetRegion

创建 VM

可以从 Azure Compute Gallery 创建虚拟机 (VM),并使用客户管理的密钥来加密磁盘。 语法与从映像创建通用化专用化 VM 相同。 请使用扩展的参数集并将 Set-AzVMOSDisk -Name $($vmName +"_OSDisk") -DiskEncryptionSetId $diskEncryptionSet.Id -CreateOption FromImage 添加到 VM 配置。

对于数据磁盘,使用 Add-AzVMDataDisk 时请添加 -DiskEncryptionSetId $setID 参数。

CLI

若要指定映像版本的磁盘加密集,请将 az image gallery create-image-version--target-region-encryption 参数配合使用。 --target-region-encryption 的格式是用于加密 OS 和数据磁盘的密钥列表(密钥以逗号分隔)。 它应如下所示: <encryption set for the OS disk>,<Lun number of the data disk>,<encryption set for the data disk>,<Lun number for the second data disk>,<encryption set for the second data disk>

如果 OS 磁盘的源是托管磁盘或 VM,请使用 --managed-image 指定映像版本的源。 在此示例中,源是一个托管映像,其中包含 OS 磁盘,以及位于 LUN 0 上的数据磁盘。 OS 磁盘将通过 DiskEncryptionSet1 加密,数据磁盘将通过 DiskEncryptionSet2 加密。

az sig image-version create \
   -g MyResourceGroup \
   --gallery-image-version 1.0.0 \
   --location chinanorth \
   --target-regions chinanorth=2=standard_lrs chinaeast2 \
   --target-region-encryption ChinaNorthDiskEncryptionSet1,0,ChinaNorthDiskEncryptionSet2 ChinaEast2DiskEncryptionSet1,0,ChinaEast2DiskEncryptionSet2 \
   --gallery-name MyGallery \
   --gallery-image-definition MyImage \
   --managed-image "/subscriptions/<subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/images/myImage"

如果 OS 磁盘的源是快照,请使用 --os-snapshot 指定 OS 磁盘。 添加任何其他也应包含在映像版本中的数据磁盘快照。 使用 --data-snapshot-luns 指定 LUN,使用 --data-snapshots 指定快照

在此示例中,源是磁盘快照。 有一个 OS 磁盘,以及一个位于 LUN 0 上的数据磁盘。 OS 磁盘将通过 DiskEncryptionSet1 加密,数据磁盘将通过 DiskEncryptionSet2 加密。

az sig image-version create \
   -g MyResourceGroup \
   --gallery-image-version 1.0.0 \
   --location chinanorth\
   --target-regions chinanorth=2=standard_lrs chinaeast2\
   --target-region-encryption ChinaNorthDiskEncryptionSet1,0,ChinaNorthDiskEncryptionSet2 ChinaEast2DiskEncryptionSet1,0,ChinaEast2DiskEncryptionSet2 \
   --os-snapshot "/subscriptions/<subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/snapshots/myOSSnapshot" \
   --data-snapshot-luns 0 \
   --data-snapshots "/subscriptions/<subscription ID>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/snapshots/myDDSnapshot" \
   --gallery-name MyGallery \
   --gallery-image-definition MyImage 

创建 VM

可以从 Azure Compute Gallery 创建 VM,并使用客户管理的密钥来加密磁盘。 语法与通过添加 --os-disk-encryption-set 参数创建通用 VM 或专用 VM 相同。 对于数据磁盘,请添加 --data-disk-encryption-sets,以及数据磁盘的磁盘加密集列表(磁盘加密集以空格分隔)。

门户

在门户中创建映像版本时,可以使用“加密”选项卡来应用存储加密集。

  1. 在“创建映像版本”页上,选择“加密”选项卡。
  2. 在“加密类型”中,请选择“使用客户管理的密钥进行静态加密”或“通过平台管理的密钥和客户管理的密钥进行双重加密”。
  3. 对于映像中的每个磁盘,请从“磁盘加密集”下拉列表中选择一个加密集。

创建 VM

可以从映像版本创建 VM,并使用客户管理的密钥来加密磁盘。 在门户中创建 VM 时,请在“磁盘”选项卡上,选择“使用客户管理的密钥进行静态加密”或“通过平台管理的密钥和客户管理的密钥进行双重加密”作为“加密类型”。 然后可以从下拉列表中选择加密集。

后续步骤

详细了解服务器端磁盘加密

有关如何提供购买计划信息的信息,请参阅在创建映像时提供 Azure 市场购买计划信息