适用于:✔️ Linux VM ✔️ Windows VM ✔️
Azure 磁盘存储支持对托管磁盘的静态双重加密。 有关静态双重加密的概念信息以及其他托管磁盘加密类型,请参阅磁盘加密文章的静态双重加密部分。
限制
超级磁盘或高级 SSD v2 磁盘当前不支持双重静态加密。
先决条件
如果要使用 Azure CLI,请安装最新的 Azure CLI,并使用 az login 登录到 Azure 帐户。
如果要使用 Azure PowerShell,请安装最新的Azure PowerShell版本,并使用 Connect-AzAccount 登录到Azure帐户。
如果创建密钥保管库,请启用软删除和清除保护。 软删除会在保留期内保留已删除的密钥,保留期默认为 90 天。 清除保护可防止永久删除,直到该时间段结束。 使用Azure 密钥保管库加密托管磁盘时,这两个设置都是必需的。
启用静态双重加密
在 Azure 门户中启用双重加密
登录到 Azure 门户。
搜索并选择Disk Encryption Sets。
选择 + 新建。
选择一个支持的区域。
对于“加密类型”,请选择“通过平台管理的密钥和客户管理的密钥进行双重加密”。
注意
一旦创建具有特定加密类型的磁盘加密集,其加密类型便无法更改。 如果要使用其他加密类型,则必须创建新的磁盘加密集。
填写剩余信息。
选择 Azure 密钥保管库和密钥,或者根据需要新建一个。
注意
如果创建密钥保管库,请启用软删除和清除保护,如先决条件中所述。
选择“创建” 。
转到你创建的磁盘加密集,然后选择警报提示以授予所需的密钥保管库权限。
通知确认已分配角色并授予密钥保管库权限。
导航到你的磁盘。
选择“加密”。
对于“加密类型”,请选择“通过平台管理的密钥和客户管理的密钥进行双重加密”。
选择你的磁盘加密集。
选择“保存”。
现已在托管磁盘上启用静态双重加密。
使用 Azure CLI 启用双重加密
创建密钥保管库和加密密钥。
使用 az account set 选择订阅, az keyvault create 创建启用了软删除和清除保护的密钥保管库,并使用 az keyvault key create 创建 加密密钥。
subscriptionId=yourSubscriptionID
rgName=yourResourceGroupName
location=chinanorth2
keyVaultName=yourKeyVaultName
keyName=yourKeyName
diskEncryptionSetName=yourDiskEncryptionSetName
diskName=yourDiskName
az account set --subscription $subscriptionId
az keyvault create -n $keyVaultName -g $rgName -l $location --enable-purge-protection true --enable-soft-delete true
az keyvault key create --vault-name $keyVaultName -n $keyName --protection software
使用 az keyvault key show 获取创建的密钥的 URL。
az keyvault key show --name $keyName --vault-name $keyVaultName
使用 az disk-encryption-set create 创建磁盘加密集,并将加密类型设置为 EncryptionAtRestWithPlatformAndCustomerKeys。 用 az keyvault key show 返回的 URL 替换 yourKeyURL。
az disk-encryption-set create --resource-group $rgName --name $diskEncryptionSetName --key-url yourKeyURL --source-vault $keyVaultName --encryption-type EncryptionAtRestWithPlatformAndCustomerKeys
授予磁盘加密集对密钥保管库的访问权限。 使用 az disk-encryption-set show 获取其主体 ID 和 az keyvault set-policy 来授予所需的密钥权限。
注意
Azure 可能需要几分钟时间才能在 Microsoft Entra ID 中创建磁盘加密集的标识。 如果命令返回“找不到Active Directory对象”错误,请等待几分钟,然后重试。
desIdentity=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [identity.principalId] -o tsv)
az keyvault set-policy -n $keyVaultName -g $rgName --object-id $desIdentity --key-permissions wrapkey unwrapkey get
将磁盘加密集应用到托管磁盘。 磁盘不得附加到正在运行的 VM。 使用 az disk update 配置双重加密,然后使用 az disk show 验证加密类型。
diskEncryptionSetId=$(az disk-encryption-set show -n $diskEncryptionSetName -g $rgName --query [id] -o tsv)
az disk update -n $diskName -g $rgName \
--encryption-type EncryptionAtRestWithPlatformAndCustomerKeys \
--disk-encryption-set $diskEncryptionSetId
az disk show -n $diskName -g $rgName --query encryption.type -o tsv
验证该命令是否返回 EncryptionAtRestWithPlatformAndCustomerKeys。
使用 Azure PowerShell 启用双重加密
创建密钥保管库和加密密钥。
使用 New-AzKeyVault 创建启用了软删除和清除保护的密钥保管库,然后使用 Add-AzKeyVaultKey 创建加密密钥。
$ResourceGroupName="yourResourceGroupName"
$LocationName="chinanorth2"
$keyVaultName="yourKeyVaultName"
$keyName="yourKeyName"
$keyDestination="Software"
$diskEncryptionSetName="yourDiskEncryptionSetName"
$diskName="yourDiskName"
$keyVault = New-AzKeyVault -Name $keyVaultName -ResourceGroupName $ResourceGroupName -Location $LocationName -EnableSoftDelete -EnablePurgeProtection
$key = Add-AzKeyVaultKey -VaultName $keyVaultName -Name $keyName -Destination $keyDestination
使用 Get-AzKeyVaultKey 检索后续命令的密钥 URL。
Get-AzKeyVaultKey -VaultName $keyVaultName -KeyName $keyName
使用 Get-AzKeyVault 获取供后续命令使用的密钥保管库资源 ID。
Get-AzKeyVault -VaultName $keyVaultName
使用 New-AzDiskEncryptionSetConfig 和 New-AzDiskEncryptionSet 创建将加密类型设置为 EncryptionAtRestWithPlatformAndCustomerKeys 的磁盘加密集。 将 yourKeyURL 和 yourKeyVaultURL 替换为之前检索到的值。
$config = New-AzDiskEncryptionSetConfig -Location $locationName -KeyUrl "yourKeyURL" -SourceVaultId 'yourKeyVaultURL' -IdentityType 'SystemAssigned'
$config | New-AzDiskEncryptionSet -ResourceGroupName $ResourceGroupName -Name $diskEncryptionSetName -EncryptionType EncryptionAtRestWithPlatformAndCustomerKeys
授予磁盘加密集对密钥保管库的访问权限。 使用 Get-AzDiskEncryptionSet 获取其标识和 Set-AzKeyVaultAccessPolicy 来授予所需的密钥权限。
注意
Azure 可能需要几分钟时间才能在 Microsoft Entra ID 中创建磁盘加密集的标识。 如果命令返回“找不到Active Directory对象”错误,请等待几分钟,然后重试。
$des=Get-AzDiskEncryptionSet -name $diskEncryptionSetName -ResourceGroupName $ResourceGroupName
Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ObjectId $des.Identity.PrincipalId -PermissionsToKeys wrapkey,unwrapkey,get
将磁盘加密集应用到托管磁盘。 磁盘不得附加到正在运行的 VM。 使用 New-AzDiskUpdateConfig 和 Update-AzDisk 配置双重加密,然后使用 Get-AzDisk 验证加密类型。
$diskEncryptionSet = Get-AzDiskEncryptionSet -ResourceGroupName $ResourceGroupName -Name $diskEncryptionSetName
New-AzDiskUpdateConfig `
-EncryptionType "EncryptionAtRestWithPlatformAndCustomerKeys" `
-DiskEncryptionSetId $diskEncryptionSet.Id | `
Update-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $diskName
$disk = Get-AzDisk -ResourceGroupName $ResourceGroupName -DiskName $diskName
$disk.Encryption.Type
验证该命令是否返回 EncryptionAtRestWithPlatformAndCustomerKeys。
后续步骤