在 Linux VM (預覽版) 以 Microsoft Entra ID 啟用 Azure 磁碟加密

適用於:✔️ Linux VM ✔️ 彈性擴展集

新版的 Azure 磁碟加密不需要提供 Microsoft Entra 應用程式參數,即可啟用 VM 磁碟加密。 若使用新版本,您就無須在啟用加密步驟期間提供 Microsoft Entra 認證。 若使用新版本,所有新的 VM 必須經過加密,而不需要 Microsoft Entra 應用程式參數。 如需使用新版本來啟用 VM 磁碟加密的指示,請參閱適用於 Linux VM 的 Azure 磁碟加密。 已經使用 Microsoft Entra 應用程式參數進行加密的 VM 仍然受支援,且應該繼續使用 Microsoft Entra 語法進行維護。

您可以啟用許多磁碟加密案例,步驟可能會因案例而有所不同。 下列各節涵蓋更詳細的 Linux 基礎結構即服務 (IaaS) VM 案例。 您只能將磁碟加密套用到受支援 VM 大小和作業系統的虛擬機器。 您也必須符合下列必要條件:

在加密磁碟前,請先建立快照集、進行備份,或進行以上兩個作業。 擁有備份可確保在加密期間發生任何非預期的失敗時,能有復原選項可供選擇。 具有受控磁碟的 VM 需要有備份,才能進行加密。 建立備份後,您可以使用 Set-AzVMDiskEncryptionExtension Cmdlet,並指定 -skipVmBackup 參數來加密受控磁碟。 如需如何備份和還原已加密 VM 的詳細資訊,請參閱 Azure 備份

警告

  • 如果您先前曾使用 Azure 磁碟加密搭配 Microsoft Entra 應用程式 來加密此 VM,則必須繼續使用此選項來加密您的 VM。 您無法在此加密的 VM 上使用 Azure 磁碟加密,因為這不是支援的案例,這表示目前尚不支援將此加密的 VM 切換為 Microsoft Entra 應用程式以外的選項。
  • 為了確保加密密碼不會跨出區域界限,Azure 磁碟加密需要將金鑰保存庫和 VM 置於相同區域。 請在與待加密 VM 相同的區域中建立並使用金鑰保存庫。
  • 在加密 Linux OS 磁碟區時,此程序可能需要幾小時的時間。 相較於資料磁碟區,加密 Linux OS 磁碟區所需的時間通常比較長。
  • 在加密 Linux OS 磁碟區時,請將 VM 視為無法使用。 強烈建議您在加密過程中避免進行 SSH 登入,以免封鎖加密過程中需要存取的任何已開啟檔案。 若要檢查進度,可使用 Get-AzVMDiskEncryptionStatusvm encryption show 命令。 對於 30 GB OS 磁碟區,此過程預計需要幾個小時,再加上額外的時間來加密資料磁碟區。 除非使用 [加密所有格式] 選項,否則資料磁碟區加密時間將與資料磁碟區的大小和數量成正比。
  • 只有資料磁碟區支援在 Linux VM 上停用加密。 如果 OS 磁碟區已加密,則不支援在資料或 OS 磁碟區上停用加密。

在現有或執行中的 IaaS Linux VM 上啟用加密

在這個案例中,您可以使用 Azure Resource Manager 範本、PowerShell Cmdlet 或 Azure CLI 命令來啟用加密。

重要

在啟用 Azure 磁碟加密之前,您必須先在 Azure 磁碟加密之外對受控磁碟型 VM 執行個體建立快照集或進行備份。 您可以從 Azure 入口網站建立受控磁碟的快照集,或使用 Azure 備份。 擁有備份可確保在加密期間發生任何非預期的失敗時,能有復原選項可供選擇。 建立備份後,您可以使用 Set-AzVMDiskEncryptionExtension Cmdlet,並指定 -skipVmBackup 參數來加密受控磁碟。 在建立備份並指定此參數前,對受控磁碟型 VM 執行 Set-AzVMDiskEncryptionExtension 命令都將會失敗。

加密或停用加密功能,可能會導致 VM 重新啟動。

使用 Azure CLI 在現有或執行中的 Linux VM 上啟用加密

您可以安裝並使用 Azure CLI 2.0 命令列工具,在加密的 VHD 上啟用磁碟加密。 您可以在瀏覽器中將它與 Azure Cloud Shell 搭配使用,或可將它安裝在本機電腦上,並在任何 PowerShell 工作階段中使用它。 若要在 Azure 中現有或執行中的 IaaS Linux VM 上啟用加密,請使用下列 CLI 命令:

在 Azure 中使用 az vm encryption enable 命令以在執行中的 IaaS 虛擬機器上啟用加密。

  • 使用用戶端密碼來加密執行中的 VM:

        az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --aad-client-id "<my spn created with CLI/my Azure AD ClientID>"  --aad-client-secret "My-AAD-client-secret" --disk-encryption-keyvault "MySecureVault" --volume-type [All|OS|Data]
    
  • 使用 KEK 來加密執行中的 VM 以包裝用戶端密碼:

        az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --aad-client-id "<my spn created with CLI which is the Azure AD ClientID>"  --aad-client-secret "My-AAD-client-secret" --disk-encryption-keyvault  "MySecureVault" --key-encryption-key "MyKEK_URI" --key-encryption-keyvault "MySecureVaultContainingTheKEK" --volume-type [All|OS|Data]
    

    注意

    disk-encryption-keyvault 參數值的語法為完整識別碼字串:/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]。

    key-encryption-key 參數值的語法為 KEK 的完整 URI:https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]。

  • 確認磁碟已加密:若要檢查 IaaS VM 的加密狀態,請使用 az vm encryption show 命令。

        az vm encryption show --name "MySecureVM" --resource-group "MyVirtualMachineResourceGroup"
    
  • 停用加密:若要停用加密,請使用 az vm encryption disable 命令。 只能在 Linux VM 的資料磁碟區上停用加密。

        az vm encryption disable --name "MySecureVM" --resource-group "MyVirtualMachineResourceGroup" --volume-type DATA
    

使用 PowerShell 在現有或執行中的 Linux VM 上啟用加密

在 Azure 中使用 Set-AzVMDiskEncryptionExtension Cmdlet 以在執行 IaaS 的虛擬機器上啟用加密。 加密磁碟前,請先建立快照集或使用 Azure 備份來備份 VM。 PowerShell 指令碼中已指定 -skipVmBackup 參數以加密執行中的 Linux VM。

  • 使用用戶端密碼來加密執行中的 VM:以下指令碼會初始化您的變數並執行 Set-AzVMDiskEncryptionExtension Cmdlet。 資源群組、VM、金鑰保存庫、Microsoft Entra 應用程式和用戶端密碼應該已經建立為必要條件。 使用您的值取代 MyVirtualMachineResourceGroup、MyKeyVaultResourceGroup、MySecureVM、MySecureVault、My-AAD-client-ID 和 My-AAD-client-secret。 修改 -VolumeType 參數,以指定您要加密的磁碟。

        $VMRGName = 'MyVirtualMachineResourceGroup';
        $KVRGname = 'MyKeyVaultResourceGroup';
        $vmName = 'MySecureVM';
        $aadClientID = 'My-AAD-client-ID';
        $aadClientSecret = 'My-AAD-client-secret';
        $KeyVaultName = 'MySecureVault';
        $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname;
        $diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
        $KeyVaultResourceId = $KeyVault.ResourceId;
        $sequenceVersion = [Guid]::NewGuid();
    
        Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $vmName -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -VolumeType '[All|OS|Data]' -SequenceVersion $sequenceVersion -skipVmBackup;
    
  • 使用 KEK 來加密執行中的 VM 以包裝用戶端密碼:Azure 磁碟加密可讓您指定金鑰保存庫中的現有金鑰,以包裝在啟用加密時所產生的磁碟加密密碼。 若指定了金鑰加密金鑰,Azure 磁碟加密會先使用該金鑰包裝加密密碼,再寫入金鑰保存庫。 修改 -VolumeType 參數,以指定您要加密的磁碟。

        $KVRGname = 'MyKeyVaultResourceGroup';
        $VMRGName = 'MyVirtualMachineResourceGroup';
        $aadClientID = 'My-AAD-client-ID';
        $aadClientSecret = 'My-AAD-client-secret';
        $KeyVaultName = 'MySecureVault';
        $keyEncryptionKeyName = 'MyKeyEncryptionKey';
        $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname;
        $diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
        $KeyVaultResourceId = $KeyVault.ResourceId;
        $keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName).Key.kid;
        $sequenceVersion = [Guid]::NewGuid();
    
        Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $vmName -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId -VolumeType '[All|OS|Data]' -SequenceVersion $sequenceVersion -skipVmBackup;
    

    注意

    disk-encryption-keyvault 參數值的語法為完整識別碼字串:/subscriptions/[subscription-id-guid]/resourceGroups/[KVresource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]。

    key-encryption-key 參數值的語法為 KEK 的完整 URI:https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]。

  • 確認磁碟已加密:若要檢查 IaaS VM 的加密狀態,請使用 Get-AzVmDiskEncryptionStatus Cmdlet。

        Get-AzVmDiskEncryptionStatus -ResourceGroupName MyVirtualMachineResourceGroup -VMName MySecureVM
    
  • 停用磁碟加密:若要停用加密,請使用 Disable-AzureRmVMDisk​Encryption Cmdlet。 只能在 Linux VM 的資料磁碟區上停用加密。

        Disable-AzVMDiskEncryption -ResourceGroupName 'MyVirtualMachineResourceGroup' -VMName 'MySecureVM'
    

透過範本在現有或執行中的 IaaS Linux VM 上啟用加密

您可以使用 Resource Manager 範本,在 Azure 中現有或執行中的 IaaS Linux VM 上啟用磁碟加密。

  1. 在 Azure 快速入門範本上,選取 [部署至 Azure]

  2. 選取訂用帳戶、資源群組、資源群組位置、參數、法律條款及合約。 選取 [建立],以在現有或執行中的 IaaS VM 上啟用加密。

針對使用 Microsoft Entra 用戶端識別碼的現有或執行中 VM,以下資料表列出其 Resource Manager 範本參數︰

參數 描述
AADClientID 具有權限可將密碼寫入金鑰保存庫的 Microsoft Entra 應用程式用戶端識別碼。
AADClientSecret 具有權限可將密碼寫入金鑰保存庫的 Microsoft Entra 應用程式用戶端密碼。
keyVaultName 應上傳金鑰的金鑰保存庫名稱。 您可以使用 Azure CLI 命令 az keyvault show --name "MySecureVault" --query KVresourceGroup 來取得它。
keyEncryptionKeyURL 用來加密所產生金鑰的金鑰加密金鑰 URL。 如果您在 [UseExistingKek] 下拉式清單中選取 [nokek],此參數是選擇性的。 如果您在 [UseExistingKek] 下拉式清單中選取 [kek],您必須輸入 keyEncryptionKeyURL 值。
volumeType 執行加密作業所在磁碟區的類型。 有效的支援值為 OSAll。 (請參閱先前的必要條件章節,了解支援的 Linux 發行版本以及其 OS 和資料磁碟版本。)
sequenceVersion BitLocker 作業的順序版本。 每當在相同的 VM 上執行磁碟加密作業時便遞增此版本號碼。
vmName 要執行加密作業所在 VM 的名稱。
passphrase 輸入強式複雜密碼做為資料加密金鑰。

針對 Linux IaaS VM 上的資料磁碟使用 EncryptFormatAll 功能

EncryptFormatAll 參數會減少 Linux 資料磁碟的加密時間。 符合特定準則的分割區 (與其目前檔案系統) 會進行格式化。 接著,系統會在執行命令前將其重新裝載至原本的位置。 如果想要排除符合準則的資料磁碟,您可以在執行命令前將其卸載。

當您執行此命令後,任何先前裝載的磁碟機都會格式化。 接著,加密層級會在目前空的磁碟機上啟動。 選取此選項後,系統也會加密已連結至 VM 的暫時性磁碟。 如果重設暫時性磁碟機,Azure 磁碟加密解決方案會在下一次將 VM 重新格式化並重新加密。

警告

當 VM 的資料磁碟區有所需資料時,不應該使用 EncryptFormatAll。 您可將磁碟卸載,將其從加密程序中排除。 在測試 VM 上試用 EncryptFormatAll 參數,了解功能參數和其含意,然後在生產 VM 上試用。 EncryptFormatAll 選項會將資料磁碟格式化,因此資料磁碟上的所有資料都將遺失。 繼續進行之前,請確認您想要排除的磁碟已正確卸載。

如果您在更新加密設定時設定此參數,則可能導致在實際加密前重新啟動。 在此情況下,您也可以從 fstab 檔案中移除您不想格式化的磁碟。 同樣地,您應該先將想要加密格式化的分割區新增至 fstab 檔案,再起始加密作業。

EncryptFormatAll 準則

此參數會通過所有分割區,且只要參數符合下列所有準則,就會予以加密:

  • 不是根/OS/開機磁碟分割
  • 尚未加密
  • 不是 BEK 磁碟區
  • 不是 RAID 磁碟區
  • 不是 LVM 磁碟區
  • 已掛接

對組成 RAID 或 LVM 磁碟區的磁碟進行加密,而非對 RAID 或 LVM 磁碟區本身進行加密。

使用 EncryptFormatAll 參數搭配範本

若要使用 EncryptFormatAll 選項,請使用任何可加密 Linux VM 的既有 Azure Resource Manager 範本,並且變更 AzureDiskEncryption 資源的 [EncryptionOperation] 欄位。

  1. 例如,使用 Resource Manager 範本來加密執行中的 Linux IaaS VM
  2. 在 Azure 快速入門範本上,選取 [部署至 Azure]
  3. 將 [EncryptionOperation] 欄位從 EnableEncryption 變更為 EnableEncryptionFormatAl
  4. 選取訂用帳戶、資源群組、資源群組位置、其他參數、法律條款及合約。 選取 [建立],以在現有或執行中的 IaaS VM 上啟用加密。

使用 EncryptFormatAll 參數搭配 PowerShell Cmdlet

使用 Set-AzVMDiskEncryptionExtension Cmdlet 搭配 EncryptFormatAll 參數。

使用用戶端密碼和 EncryptFormatAll 來加密執行中的 VM:例如,以下指令碼會初始化您的變數並執行 Set-AzVMDiskEncryptionExtension Cmdlet 搭配 EncryptFormatAll 參數。 資源群組、VM、金鑰保存庫、Microsoft Entra 應用程式和用戶端密碼應該已經建立為必要條件。 使用您的值取代 MyKeyVaultResourceGroup、MyVirtualMachineResourceGroup、MySecureVM、MySecureVault、My-AAD-client-ID 和 My-AAD-client-secret。

  $KVRGname = 'MyKeyVaultResourceGroup';
  $VMRGName = 'MyVirtualMachineResourceGroup';
  $aadClientID = 'My-AAD-client-ID';
  $aadClientSecret = 'My-AAD-client-secret';
  $KeyVaultName = 'MySecureVault';
  $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname;
  $diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
  $KeyVaultResourceId = $KeyVault.ResourceId;

  Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $vmName -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -EncryptFormatAll

使用 EncryptFormatAll 參數搭配邏輯磁碟區管理員 (LVM)

我們建議進行 LVM-on-crypt 設定。 在下列所有範例中,以適合您使用案例的項目取代裝置路徑和裝載點。 以下步驟可以完成此設定:

  • 新增將構成 VM 的資料磁碟。

  • 格式化、掛接這些磁碟,並將其新增至 fstab 檔案。

    1. 格式化剛新增的磁碟。 我們會 Azure 在此產生的符號連結。 使用符號連結,可避免裝置名稱變更的相關問題。 如需詳細資訊,請參閱針對裝置名稱問題進行疑難排解

      mkfs -t ext4 /dev/disk/azure/scsi1/lun0
      
    2. 掛接磁碟。

      mount /dev/disk/azure/scsi1/lun0 /mnt/mountpoint
      
    3. 新增至 fstab。

      echo "/dev/disk/azure/scsi1/lun0 /mnt/mountpoint ext4 defaults,nofail 1 2" >> /etc/fstab
      
    4. 執行 Set-AzVMDiskEncryptionExtension PowerShell Cmdlet 搭配 -EncryptFormatAll 來加密這些磁碟。

       Set-AzVMDiskEncryptionExtension -ResourceGroupName "MySecureGroup" -VMName "MySecureVM" -DiskEncryptionKeyVaultUrl "https://mykeyvault.vault.azure.net/" -EncryptFormatAll
      
    5. 在這些新的磁碟上設定 LVM。 請注意,VM 完成開機之後,加密磁碟機就會解除鎖定。 因此,LVM 掛接後續也必須延遲。

透過客戶加密的 VHD 和加密金鑰所建立新 IaaS VM

在這個案例中,您可以使用 Resource Manager 範本、PowerShell Cmdlet 或 CLI 命令啟用加密。 下列各節將更加詳細地說明 Resource Manager 範本和 CLI 命令。

使用附錄中的指示來準備可用於 Azure 的預先加密映像。 映像建立之後,您可以使用下一節的步驟來建立加密的 Azure VM。

重要

在啟用 Azure 磁碟加密之前,您必須先在 Azure 磁碟加密之外對受控磁碟型 VM 執行個體建立快照集或進行備份。 您可以從入口網站建立受控磁碟的快照集,或使用 Azure 備份。 擁有備份可確保在加密期間發生任何非預期的失敗時,能有復原選項可供選擇。 建立備份後,您可以使用 Set-AzVMDiskEncryptionExtension Cmdlet,並指定 -skipVmBackup 參數來加密受控磁碟。 在建立備份並指定此參數前,對受控磁碟型 VM 執行 Set-AzVMDiskEncryptionExtension 命令都將會失敗。

加密或停用加密功能,可能會導致 VM 重新啟動。

使用 Azure PowerShell 來加密具有預先加密 VHD 的 IaaS VM

您可以使用 PowerShell Cmdlet Set-AzVMOSDisk 在加密的 VHD 上啟用磁碟加密。 下列範例會提供一些常見的參數。

$VirtualMachine = New-AzVMConfig -VMName "MySecureVM" -VMSize "Standard_A1"
$VirtualMachine = Set-AzVMOSDisk -VM $VirtualMachine -Name "SecureOSDisk" -VhdUri "os.vhd" Caching ReadWrite -Windows -CreateOption "Attach" -DiskEncryptionKeyUrl "https://mytestvault.vault.azure.net/secrets/Test1/514ceb769c984379a7e0230bddaaaaaa" -DiskEncryptionKeyVaultId "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myresourcegroup/providers/Microsoft.KeyVault/vaults/mytestvault"
New-AzVM -VM $VirtualMachine -ResourceGroupName "MyVirtualMachineResourceGroup"

在新增的資料磁碟上啟用加密

您可以使用 az vm disk attach透過 Azure 入口網站來新增資料磁碟。 您必須先掛接新連結的資料磁碟,才可以加密。 您必須要求資料磁碟機進行加密,因為在進行加密時,您將無法使用該磁碟機。

透過 Azure CLI 在新增的磁碟上啟用加密

若 VM 先前以「All」加密,則 --volume-type 參數也應該保留為「All」。 全部包含作業系統與資料磁碟。 若 VM 先前以「OS」磁碟區類型加密,則應將 --volume-type 參數變更為「All」,確保 OS 和新的資料磁碟都包含在其中。 若 VM 僅使用「Data」磁碟區類型加密,則可以如此處所示保留「Data」參數值。 若要準備進行加密,除了新增資料磁碟並連結至 VM,還需要進行其他項目。 啟用加密之前,新連結的磁碟必須經過格式化,並正確裝載於 VM 中。 Linux 上的磁碟必須裝載於 /etc/fstab,且必須有一致的區塊裝置名稱

在啟用加密時,與 PowerShell 語法不同,CLI 不需要您提供唯一的序列版本。 CLI 為自動產生並使用其唯一序列版本的值。

  • 使用用戶端密碼來加密執行中的 VM:

        az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --aad-client-id "<my spn created with CLI/my Azure AD ClientID>"  --aad-client-secret "My-AAD-client-secret" --disk-encryption-keyvault "MySecureVault" --volume-type "Data"
    
  • 使用 KEK 來加密執行中的 VM 以包裝用戶端密碼:

        az vm encryption enable --resource-group "MyVirtualMachineResourceGroup" --name "MySecureVM" --aad-client-id "<my spn created with CLI which is the Azure AD ClientID>"  --aad-client-secret "My-AAD-client-secret" --disk-encryption-keyvault  "MySecureVault" --key-encryption-key "MyKEK_URI" --key-encryption-keyvault "MySecureVaultContainingTheKEK" --volume-type "Data"
    

透過 Azure PowerShell 在新增的磁碟上啟用加密

使用 PowerShell 來加密 Linux 的新磁碟時,必須指定新的序列版本。 序列版本必須是唯一的。 下列指令碼會產生序列版本的 GUID。

  • 使用用戶端密碼來加密執行中的 VM:以下指令碼會初始化您的變數並執行 Set-AzVMDiskEncryptionExtension Cmdlet。 資源群組、VM、金鑰保存庫、Microsoft Entra 應用程式和用戶端密碼應該已經建立為必要條件。 使用您的值取代 MyVirtualMachineResourceGroup、MyKeyVaultResourceGroup、MySecureVM、MySecureVault、My-AAD-client-ID 和 My-AAD-client-secret。 -VolumeType 參數會設定為資料磁碟,而非作業系統磁碟。 若 VM 先前以「OS」或「All」磁碟區類型加密,則應將 --VolumeType 參數變更為「All」,確保 OS 和新的資料磁碟都包含在其中。

        $KVRGname = 'MyKeyVaultResourceGroup';
        $VMRGName = 'MyVirtualMachineResourceGroup';
        $vmName = 'MySecureVM';
        $aadClientID = 'My-AAD-client-ID';
        $aadClientSecret = 'My-AAD-client-secret';
        $KeyVaultName = 'MySecureVault';
        $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname;
        $diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
        $KeyVaultResourceId = $KeyVault.ResourceId;
        $sequenceVersion = [Guid]::NewGuid();
    
        Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $vmName -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -VolumeType 'data' –SequenceVersion $sequenceVersion;
    
  • 使用 KEK 來加密執行中的 VM 以包裝用戶端密碼:Azure 磁碟加密可讓您指定金鑰保存庫中的現有金鑰,以包裝在啟用加密時所產生的磁碟加密密碼。 若指定了金鑰加密金鑰,Azure 磁碟加密會先使用該金鑰包裝加密密碼,再寫入金鑰保存庫。 -VolumeType 參數會設定為資料磁碟,而非作業系統磁碟。 若 VM 先前以「OS」或「All」磁碟區類型加密,則應將 --VolumeType 參數變更為「All」,確保 OS 和新的資料磁碟都包含在其中。

        $KVRGname = 'MyKeyVaultResourceGroup';
        $VMRGName = 'MyVirtualMachineResourceGroup';
        $vmName = 'MyExtraSecureVM';
        $aadClientID = 'My-AAD-client-ID';
        $aadClientSecret = 'My-AAD-client-secret';
        $KeyVaultName = 'MySecureVault';
        $keyEncryptionKeyName = 'MyKeyEncryptionKey';
        $KeyVault = Get-AzKeyVault -VaultName $KeyVaultName -ResourceGroupName $KVRGname;
        $diskEncryptionKeyVaultUrl = $KeyVault.VaultUri;
        $KeyVaultResourceId = $KeyVault.ResourceId;
        $keyEncryptionKeyUrl = (Get-AzKeyVaultKey -VaultName $KeyVaultName -Name $keyEncryptionKeyName).Key.kid;
        $sequenceVersion = [Guid]::NewGuid();
    
        Set-AzVMDiskEncryptionExtension -ResourceGroupName $VMRGName -VMName $vmName -AadClientID $aadClientID -AadClientSecret $aadClientSecret -DiskEncryptionKeyVaultUrl $diskEncryptionKeyVaultUrl -DiskEncryptionKeyVaultId $KeyVaultResourceId -KeyEncryptionKeyUrl $keyEncryptionKeyUrl -KeyEncryptionKeyVaultId $KeyVaultResourceId -VolumeType 'data' –SequenceVersion $sequenceVersion;
    

注意

disk-encryption-keyvault 參數值的語法為完整識別碼字串:/subscriptions/[subscription-id-guid]/resourceGroups/[resource-group-name]/providers/Microsoft.KeyVault/vaults/[keyvault-name]。

key-encryption-key 參數值的語法為 KEK 的完整 URI:https://[keyvault-name].vault.azure.net/keys/[kekname]/[kek-unique-id]。

停用 Linux VM 的加密

您可以使用 Azure PowerShell、Azure CLI 或 Resource Manager 範本來停用加密。

重要

只有資料磁碟區支援在 Linux VM 上透過 Azure 磁碟加密停用加密。 如果 OS 磁碟區已加密,則不支援在資料或 OS 磁碟區上停用加密。

  • 透過 Azure PowerShell 停用磁碟加密:若要停用加密,請使用 Disable-AzureRmVMDisk​Encryption Cmdlet。

        Disable-AzVMDiskEncryption -ResourceGroupName 'MyVirtualMachineResourceGroup' -VMName 'MySecureVM' [--volume-type {ALL, DATA, OS}]
    
  • 透過 Azure CLI 停用加密:若要停用加密,請使用 az vm encryption disable 命令。

        az vm encryption disable --name "MySecureVM" --resource-group "MyVirtualMachineResourceGroup" --volume-type [ALL, DATA, OS]
    
  • 透過 Resource Manager 範本停用加密:若要停用加密,請使用在執行中的 Linux VM 上停用加密範本。

    1. 選取 [部署到 Azure]
    2. 選取訂用帳戶、資源群組、位置、VM、法律條款及合約。
    3. 選取 [購買] 以在執行中的 Windows VM 上停用磁碟加密。

下一步