為現有的 VM 磁碟加密

已完成

假設您的公司決定對所有虛擬機器實作 Azure 磁碟加密 (ADE)。 您必須評估如何對現有的虛擬機器 (VM) 磁碟區施行加密。 在此,我們會探討 ADE 的需求,以及對現有 Linux 與 Windows VM 上的磁碟加密所涉及的步驟。 在下一個單元中,您會完成加密現有 VM 磁碟的程序。

Azure 磁碟加密的必要條件

您必須先完成下列作業,才能將 VM 磁碟加密:

  1. 建立金鑰保存庫。
  2. 設定金鑰保存庫存取原則以支援磁碟加密。
  3. 使用金鑰保存庫來儲存 ADE 加密金鑰。

Azure Key Vault

ADE 使用的加密金鑰可儲存在 Azure Key Vault 中。 Azure Key Vault 是可安全儲存及存取祕密的工具。 祕密是指任何需受到嚴密控制存取的項目,例如 API 金鑰、密碼或憑證。 Azure Key Vault 會提供高度可用且可調整的安全儲存體,如同在聯邦資訊處理標準 (FIPS) 140-2 Level 2 驗證的硬體安全模組 (HSM) 中所定義。 使用 Azure Key Vault 時,您將可完全掌控用來加密資料的金鑰,並且可管理及稽核金鑰的使用方式。

注意

使用 Azure 磁碟加密時,您的金鑰保存庫和 VM 必須位於相同的 Azure 區域中;這可確保加密祕密不會跨越區域界限。

您可以設定和管理金鑰保存庫的方式如下:

PowerShell

New-AzKeyVault -Location <location> `
    -ResourceGroupName <resource-group> `
    -VaultName "myKeyVault" `
    -EnabledForDiskEncryption

Azure CLI

az keyvault create \
    --name "myKeyVault" \
    --resource-group <resource-group> \
    --location <location> \
    --enabled-for-disk-encryption True

Azure 入口網站

Azure Key Vault 是您可以使用一般資源建立程序在 Azure 入口網站中建立的資源。

  1. 從 Azure 入口網站功能表或 [首頁] 頁面,選取 [建立資源]。

  2. 在搜尋方塊中,搜尋並選取 [金鑰保存庫]。 [金鑰保存庫] 窗格隨即出現。

  3. 選取 建立。 [建立金鑰保存庫] 窗格隨即出現。

  4. 在 [基本] 索引標籤上,為每個設定輸入下列值。

    設定
    專案詳細資料
    訂用帳戶 選取要放置金鑰保存庫的訂用帳戶 (預設為您目前的訂用帳戶)。
    資源群組 選取現有的資源群組或建立新群組。
    [執行個體詳細資料]
    金鑰保存庫名稱 輸入金鑰保存庫的名稱。
    區域 選取 VM 所在的區域。
    定價層 標準。 您可以選取「標準」或「進階」定價層。 主要差異在於「進階」定價層允許硬體加密備份金鑰。

    顯示金鑰保存庫窗格的螢幕擷取畫面。

  5. 選取 [下一步] 以移至 [存取組態] 索引標籤。您必須變更存取原則,以支援磁碟加密。 預設會將「您的」帳戶新增至原則。

  6. 在 [存取組態] 索引標籤上,為設定輸入下列值。

    設定
    資源存取 勾選 [用於磁碟區加密的 Azure 磁碟加密] 的方塊。 如果您只想使用金鑰保存庫進行磁碟加密,您可以視需要移除自己的帳戶。
  7. 選取 [檢閱 + 建立]。

  8. 通過驗證之後,若要建立新的金鑰保存庫,請選取 [建立]

啟用金鑰保存庫中的存取原則

Azure 需要存取您金鑰保存庫中的加密金鑰或祕密,讓該資訊可供 VM 用來將磁碟區開機和解密。 當您變更 [存取原則] 時,在上述步驟中啟用此存取權。

您可以啟用三個原則:

  • 磁碟加密:Azure 磁碟加密的必要項。
  • 部署:(選擇性) 可讓 Microsoft.Compute 資源提供者在資源建立期間參考了此金鑰保存庫的情況下,從此金鑰保存庫擷取祕密。 例如,建立 VM 時。
  • 範本部署:(選擇性) 讓 Azure Resource Manager 在範本部署參考了這個金鑰保存庫的情況下,從這個金鑰保存庫取得祕密。

啟用磁碟加密原則的方法如下。 其他兩個原則的方法也類似,但會使用不同的旗標。

Set-AzKeyVaultAccessPolicy -VaultName <keyvault-name> -ResourceGroupName <resource-group> -EnabledForDiskEncryption
az keyvault update --name <keyvault-name> --resource-group <resource-group> --enabled-for-disk-encryption true

為現有的 VM 磁碟加密

在設定好金鑰保存庫之後,您可以使用 Azure CLI 或 Azure PowerShell 將虛擬機器加密。 第一次為 Windows VM 加密時,您可以選擇將所有磁碟加密,或僅限 OS 磁碟。 在某些 Linux 散發套件上,只能加密資料磁碟。 若要符合加密條件,您的 Windows 磁碟必須格式化為新技術檔案系統 (NTFS) 磁碟區。

警告

您必須先建立快照集或受控磁碟的備份,才能開啟加密功能。 下列 SkipVmBackup 旗標會告知工具已在受控磁碟上完成備份。 在沒有備份的情況下,如果加密因某些原因而失敗,您就無法復原 VM。

若要使用 PowerShell 啟用加密,請執行 Set-AzVmDiskEncryptionExtension Cmdlet。


Set-AzVmDiskEncryptionExtension `
    -ResourceGroupName <resource-group> `
    -VMName <vm-name> `
    -VolumeType [All | OS | Data]
    -DiskEncryptionKeyVaultId <keyVault.ResourceId> `
    -DiskEncryptionKeyVaultUrl <keyVault.VaultUri> `
     -SkipVmBackup

若要使用 Azure CLI 啟用加密,請執行 az vm encryption enable 命令,並使用 --volume-type [all | os | data] 參數指定要加密的磁碟區。 以下是將虛擬機器的所有磁碟區加密的範例:

az vm encryption enable \
    --resource-group <resource-group> \
    --name <vm-name> \
    --disk-encryption-keyvault <keyvault-name> \
    --volume-type all

檢視磁碟狀態

您可以檢查特定磁碟是否已被加密。

Get-AzVmDiskEncryptionStatus  -ResourceGroupName <resource-group> -VMName <vm-name>
az vm encryption show --resource-group <resource-group> --name <vm-name>

這兩個命令會傳回與所指定 VM 連結的每個磁碟狀態。

解密磁碟機

若要透過 PowerShell 來解密,請執行 Disable-AzVMDiskEncryption Cmdlet。

Disable-AzVMDiskEncryption -ResourceGroupName <resource-group> -VMName <vm-name>

針對 Azure CLI,執行 vm encryption disable 命令。

az vm encryption disable --resource-group <resource-group> --name <vm-name>

這些命令會停用所指定虛擬機器 類型的磁碟區加密。 如同加密一樣,若要決定要解密的磁碟,您可以指定 -VolumeType 參數 [All | OS | Data]。 如果未提供,則會預設為 All

警告

當作業系統和資料磁碟都已加密,在 Windows VM 上停用資料磁碟加密將無法按預期運作。 您必須改為停用所有磁碟上的加密。

在下一個練習中,您會在新的 VM 嘗試一部分命令。