建立及設定適用於 Azure 磁碟加密的金鑰保存庫

Azure 磁碟加密會使用 Azure Key Vault 來控制及管理磁碟加密金鑰和祕密。 如需金鑰保存庫的詳細資訊,請參閱開始使用 Azure Key Vault保護金鑰保存庫

建立及設定與 Azure 磁碟加密搭配使用的金鑰保存庫,包含下列步驟:

  1. 建立資源群組 (如有需要)。
  2. 建立金鑰保存庫。
  3. 設定金鑰保存庫進階存取原則。

如果想要的話,您也可以產生或匯入金鑰加密金鑰 (KEK)。

安裝工具並連線至 Azure

您可以使用 Azure CLIAzure PowerShell Az 模組Azure 入口網站來完成本文中的步驟。

建立資源群組

如果您已經有資源群組,您可以跳到建立金鑰保存庫

資源群組是在其中部署與管理 Azure 資源的邏輯容器。

使用 az group create Azure CLI 命令、New-AzResourceGroup Azure PowerShell 命令,或是從 Azure 入口網站建立資源群組。

Azure CLI

az group create --name "myResourceGroup" --location eastus

Azure PowerShell

New-AzResourceGroup -Name "myResourceGroup" -Location "EastUS"

建立金鑰保存庫

如果您已經有金鑰保存庫,您可以跳到設定金鑰保存庫進階存取原則

使用 az keyvault create Azure CLI 命令、New-AzKeyvault Azure PowerShell 命令、Azure 入口網站Resource Manager 範本建立金鑰保存庫。

警告

若要確保加密祕密不會跨出區域界限,您必須建立和使用與要加密的 VM 位於「相同區域和租用戶」的金鑰保存庫。

每個金鑰保存庫必須有唯一的名稱。 在下列範例中,將 <your-unique-keyvault-name> 取代為您的金鑰保存庫名稱。

Azure CLI

使用 Azure CLI 建立金鑰保存庫時,請新增 "--enabled-for-disk-encryption" 旗標。

az keyvault create --name "<your-unique-keyvault-name>" --resource-group "myResourceGroup" --location "eastus" --enabled-for-disk-encryption

Azure PowerShell

使用 Azure PowerShell 建立金鑰保存庫時,請新增 "-EnabledForDiskEncryption" 旗標。

New-AzKeyvault -name "<your-unique-keyvault-name>" -ResourceGroupName "myResourceGroup" -Location "eastus" -EnabledForDiskEncryption

Resource Manager 範本

您也可以使用 Resource Manager 範本來建立金鑰保存庫。

  1. 在 Azure 快速入門範本中,按一下 [部署至 Azure]
  2. 選取訂用帳戶、資源群組、資源群組位置、Key Vault 名稱、物件識別碼、法律條款和協議,然後按一下 [購買]

設定金鑰保存庫進階存取原則

重要

新建立的 Key Vaults 預設啟用虛刪除。 如果您使用現有的金鑰保存庫,您必須啟用虛刪除。 請參閱 Azure Key Vault 虛刪除概觀

Azure 平台需要存取您金鑰保存庫中的加密金鑰或密碼,讓該資訊可供 VM 用來開機和解密磁碟區。

如果您未在建立時啟用金鑰保存庫的磁碟加密、部署或範本部署 (如前一個步驟所示),您必須更新其進階存取原則。

Azure CLI

使用 az keyvault update 啟用金鑰保存庫的磁碟加密。

  • 針對磁碟加密啟用 Key Vault:需要 Enabled-for-disk-encryption。

    az keyvault update --name "<your-unique-keyvault-name>" --resource-group "MyResourceGroup" --enabled-for-disk-encryption "true"
    
  • 視需要針對部署啟用 Key Vault:可讓 Microsoft.Compute 資源提供者在資源建立期間 (例如,在建立虛擬機器時) 參考了這個金鑰保存庫的情況下,從這個金鑰保存庫擷取祕密。

    az keyvault update --name "<your-unique-keyvault-name>" --resource-group "MyResourceGroup" --enabled-for-deployment "true"
    
  • 視需要針對範本部署啟用 Key Vault:允許 Resource Manager 從保存庫擷取祕密。

    az keyvault update --name "<your-unique-keyvault-name>" --resource-group "MyResourceGroup" --enabled-for-template-deployment "true"
    

Azure PowerShell

使用金鑰保存庫 PowerShell Cmdlet Set-AzKeyVaultAccessPolicy 以啟用金鑰保存庫的磁碟加密。

  • 針對磁碟加密啟用 Key Vault:Azure 磁碟加密需要 EnabledForDiskEncryption。

    Set-AzKeyVaultAccessPolicy -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "MyResourceGroup" -EnabledForDiskEncryption
    
  • 視需要針對部署啟用 Key Vault:可讓 Microsoft.Compute 資源提供者在資源建立期間 (例如,在建立虛擬機器時) 參考了這個金鑰保存庫的情況下,從這個金鑰保存庫擷取祕密。

     Set-AzKeyVaultAccessPolicy -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "MyResourceGroup" -EnabledForDeployment
    
  • 視需要針對範本部署啟用 Key Vault:可讓 Azure Resource Manager 在範本部署參考了這個金鑰保存庫的情況下,從這個金鑰保存庫取得祕密。

    Set-AzKeyVaultAccessPolicy -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "MyResourceGroup" -EnabledForTemplateDeployment
    

Azure 入口網站

  1. 選取金鑰保存庫,移至 [存取原則]

  2. 在 [啟用存取] 下方,選取標示為 [適用磁碟區加密的 Azure 磁碟加密] 的方塊。

  3. 視需要而定,選取 [適用部署的 Azure 虛擬機器] 和/或 [適用範本部署的 Azure Resource Manager]

  4. 按一下 [檔案] 。

    Azure key vault advanced access policies

Azure 磁碟加密和自動輪替

雖然 Azure Key Vault 現在具有金鑰自動輪替功能,但目前與 Azure 磁碟加密不相容。 具體而言,即使已自動輪替,Azure 磁碟加密仍繼續使用原始加密金鑰。

輪替加密金鑰不會中斷 Azure 磁碟加密,但停用「舊的」加密金鑰 (即 Azure 磁碟加密正在使用的金鑰) 會使其中斷。

設定金鑰加密金鑰 (KEK)

重要

在金鑰保存庫上啟用磁碟加密的帳戶必須具有「讀取者」權限。

如果您想使用金鑰加密金鑰 (KEK) 來為加密金鑰額外添加一層安全性,請將 KEK 新增至金鑰保存庫。 若指定了金鑰加密金鑰,Azure 磁碟加密會先使用該金鑰包裝加密祕密,再寫入 Key Vault。

您可以使用 Azure CLI az keyvault key create 命令、Azure PowerShell Add-AzKeyVaultKey Cmdlet,或 Azure 入口網站來產生新的 KEK。 您必須產生 RSA 金鑰類型;Azure 磁碟加密目前不支援使用橢圓曲線金鑰。

您可以改為從內部部署金鑰管理 HSM 匯入 KEK。 如需詳細資訊,請參閱 Key Vault 文件

您的金鑰保存庫 KEK URL 必須已設定版本。 Azure 會強制執行設定版本的這項限制。 針對有效的密碼和 KEK URL,請參閱下列範例︰

Azure CLI

使用 Azure CLI az keyvault key create 命令以產生新的 KEK,並且將其儲存在您的金鑰保存庫中。

az keyvault key create --name "myKEK" --vault-name "<your-unique-keyvault-name>" --kty RSA --size 4096

您可以改為使用 Azure CLI az keyvault key import 命令來匯入私密金鑰:

無論是哪一種方式,您都會將您的 KEK 名稱提供給 Azure CLI az vm encryption enable --key-encryption-key 參數。

az vm encryption enable -g "MyResourceGroup" --name "myVM" --disk-encryption-keyvault "<your-unique-keyvault-name>" --key-encryption-key "myKEK"

Azure PowerShell

使用 Azure PowerShell Add-AzKeyVaultKey Cmdlet 命令以產生新的 KEK,並且將其儲存在您的金鑰保存庫中。

Add-AzKeyVaultKey -Name "myKEK" -VaultName "<your-unique-keyvault-name>" -Destination "HSM" -Size 4096

您可以改為使用 Azure PowerShell az keyvault key import 命令來匯入私密金鑰。

無論是哪一種方式,您都要將您的 KEK 金鑰保存庫識別碼和 KEK 的 URL 提供給 Azure PowerShell Set-AzVMDiskEncryptionExtension -KeyEncryptionKeyVaultId 和 -KeyEncryptionKeyUrl 參數。 此範例假設您針對磁碟加密金鑰和 KEK 使用相同的金鑰保存庫。

$KeyVault = Get-AzKeyVault -VaultName "<your-unique-keyvault-name>" -ResourceGroupName "myResourceGroup"
$KEK = Get-AzKeyVaultKey -VaultName "<your-unique-keyvault-name>" -Name "myKEK"

Set-AzVMDiskEncryptionExtension -ResourceGroupName MyResourceGroup -VMName "MyVM" -DiskEncryptionKeyVaultUrl $KeyVault.VaultUri -DiskEncryptionKeyVaultId $KeyVault.ResourceId -KeyEncryptionKeyVaultId $KeyVault.ResourceId -KeyEncryptionKeyUrl $KEK.Id -SkipVmBackup -VolumeType All

下一步