使用 Azure PowerShell 模块为托管磁盘启用静态双重加密

适用于:✔️ Windows VM

Azure 磁盘存储支持对托管磁盘的静态双重加密。 有关静态双重加密的概念信息以及其他托管磁盘加密类型,请参阅磁盘加密文章的静态双重加密部分。

限制

超级磁盘当前不支持双重静态加密。

先决条件

安装最新的 Azure PowerShell 版本,并使用 Connect-AzAccount -Environment AzureChinaCloud 登录到 Azure 帐户。

入门

  1. 创建 Azure Key Vault 和加密密钥的实例。

    创建 Key Vault 实例时,必须启用软删除和清除保护。 软删除可确保 Key Vault 在给定的保留期(默认为 90 天)内保留已删除的密钥。 清除保护可确保在保留期结束之前,无法永久删除已删除的密钥。 这些设置可防止由于意外删除而丢失数据。 使用 Key Vault 加密托管磁盘时,这些设置是必需的。

    $ResourceGroupName="yourResourceGroupName"
    $LocationName="chinanorth2"
    $keyVaultName="yourKeyVaultName"
    $keyName="yourKeyName"
    $keyDestination="Software"
    $diskEncryptionSetName="yourDiskEncryptionSetName"
    
    $keyVault = New-AzKeyVault -Name $keyVaultName -ResourceGroupName $ResourceGroupName -Location $LocationName -EnableSoftDelete -EnablePurgeProtection
    
    $key = Add-AzKeyVaultKey -VaultName $keyVaultName -Name $keyName -Destination $keyDestination  
    
  2. 检索创建的密钥的 URL,后续命令需要用到它。 Get-AzKeyVaultKey 输出的 ID 是密钥 URL。

    Get-AzKeyVaultKey -VaultName $keyVaultName -KeyName $keyName
    
  3. 获取所创建的 Key Vault 实例的资源 ID,你将需要它来执行后续命令。

    Get-AzKeyVault -VaultName $keyVaultName
    
  4. 创建 DiskEncryptionSet,并将 encryptionType 设置为 EncryptionAtRestWithPlatformAndCustomerKeys。 将 yourKeyURLyourKeyVaultURL 替换为以前检索到的 URL。

    $config = New-AzDiskEncryptionSetConfig -Location $locationName -KeyUrl "yourKeyURL" -SourceVaultId 'yourKeyVaultURL' -IdentityType 'SystemAssigned'
    
    $config | New-AzDiskEncryptionSet -ResourceGroupName $ResourceGroupName -Name $diskEncryptionSetName -EncryptionType EncryptionAtRestWithPlatformAndCustomerKeys
    
  5. 授予对密钥保管库的 DiskEncryptionSet 资源访问权限。

    注意

    Azure 可能需要几分钟时间才能在 Microsoft Entra ID 中创建 DiskEncryptionSet 的标识。 如果在运行以下命令时收到类似于“找不到 Active Directory 对象”的错误,请等待几分钟,然后重试。

    $des=Get-AzDiskEncryptionSet -name $diskEncryptionSetName -ResourceGroupName $ResourceGroupName
    Set-AzKeyVaultAccessPolicy -VaultName $keyVaultName -ObjectId $des.Identity.PrincipalId -PermissionsToKeys wrapkey,unwrapkey,get
    

后续步骤

创建并配置这些资源之后,可以使用它们来保护托管磁盘。 以下链接包含示例脚本,每个脚本都有各自的方案,可用于保护托管磁盘。