這很重要
Azure Backup for Confidential 虛擬機(VM)目前處於預覽階段。 請參閱 Microsoft Azure 預覽版增補使用規定,以了解適用於 Azure 功能 (搶鮮版 (Beta)、預覽版,或尚未正式發行的版本) 的法律條款。
本文說明如何使用 Azure Backup 還原以平台管理金鑰(PMK)或客戶管理金鑰(CMK)加密的機密虛擬機(CVM)。 它涵蓋基於加密金鑰和磁碟加密集 (DES) 狀態的還原案例,並提供還原失敗時的復原程序。 它也提供擷取虛擬機加密細節、還原遺失金鑰及分配必要權限的程序。
了解 機密虛擬機備份所支援的情境。
先決條件
在開始機密虛擬機還原流程前,請確保你在復原服務保險庫中有可用的復原點。
機密 VM 的還原案例
機密虛擬機還原行為取決於還原時 DES、金鑰庫和金鑰的狀態。 主要還原情境包括:
- 原始金鑰或金鑰版本完整:如果原始的磁碟加密集 (DES) 和金鑰保持完整,還原即能成功。
- 金鑰輪替:當新的金鑰版本仍然有效時,只要前一個金鑰版本沒有過期或刪除,還原就會成功。
- 金鑰變更:如果 DES 在同一金鑰庫中使用新金鑰,只有當備份時使用的原始金鑰仍然存在時,還原才會成功。 如果原始金鑰被刪除,則會失敗。 如果你用的是不同的金鑰庫,它應該指向和原本金鑰相同的金鑰。
-
數位加密標準 (DES) 或密鑰被刪除:在還原失敗時會出現錯誤,例如
UserErrorDiskEncryptionSetDoesNotExist或UserErrorDiskEncryptionSetKeyDoesNotExist。 要解決,請使用還原的金鑰資料重新建立金鑰和 DES,然後再嘗試還原。 - 輸入DES:如果你提供由還原金鑰資料建立的新DES,若金鑰與版本與備份時使用的版本相符,還原即成功。
-
DES 或 Key 不匹配:還原失敗。
UserErrorInputDESKeyDoesNotMatchWithOriginalKey要解決這個錯誤,請還原遺失的金鑰。
學習如何 還原遺失的金鑰以進行機密虛擬機還原。
還原機密虛擬機
使用保留原始金鑰的方式還原
在還原過程中,當原始的客戶管理金鑰(CMK)、金鑰庫、mHSM 和 DES 可用時,您可以在不提供磁碟加密設定輸入的情況下繼續。 在這種情況下,你可以照常繼續還原流程。 學習如何還原 Azure 虛擬機。
當原始金鑰被旋轉、遺失或被入侵時還原
如果原始 CMK、Key Vault、mHSM 或 DES 引用 CMK 無法使用,或備份無法存取原始 CMK,還原程序就會失敗。 在這種情況下,初始還原嘗試失敗,CVM 也無法還原。 為了解決這個問題,請遵循以下步驟:
- 在不提供磁碟加密設定輸入的情況下,觸發第一個還原操作。 這次嘗試因缺少金鑰而失敗,但金鑰會被還原到儲存帳號中。
- 完成此程序後,還原由 Azure Backup 備份的客戶管理金鑰,然後建立一個指向已恢復金鑰的新 DES。 學習如何 恢復遺失的金鑰 並 指派所需權限。
- 在還原頁面再次起始還原作業,這次請輸入適當的磁碟加密集。
備註
目前不支援從僅快照層級的還原點,使用不同的 DES 進行還原,即使它使用正確的金鑰也不行。
還原機密虛擬機遺失的密鑰
如果還原操作失敗,你需要還原 Azure Backup 備份的金鑰。
要使用 PowerShell 還原金鑰,請依照以下步驟操作:
要選擇包含受保護 CVM + CMK 的保險庫,請在 cmdlet 中輸入資源群組及保險庫名稱,然後執行該 cmdlet。
$vault = Get-AzRecoveryServicesVault -ResourceGroupName "<vault-rg>" -Name "<vault-name>"若要列出過去七天內所有失敗的還原任務,請執行以下指令。 如果你想取得較舊的工作,可以在指令清單中更新日期範圍。
$Jobs = Get-AzRecoveryServicesBackupJob -From (Get-Date).AddDays(-7).ToUniversalTime() -Status Failed -Operation Restore -VaultId $vault.ID要從結果中選擇失敗的還原工作並取得工作細節,請執行以下 cmdlet:
範例
$JobDetails = Get-AzRecoveryServicesBackupJobDetail -Job $Jobs[0] -VaultId $vault.ID要從工作細節取得所有金鑰還原所需的參數,請執行以下 cmdlet:
$properties = $JobDetails.properties $storageAccountName = $properties["Target Storage Account Name"] $containerName = $properties["Config Blob Container Name"] $securedEncryptionInfoBlobName = $properties["Secured Encryption Info Blob Name"]要選擇用於還原的目標儲存帳號,請在以下 cmdlet 中輸入其資源群組,然後執行該 cmdlet:
Set-AzCurrentStorageAccount -Name $storageaccountname -ResourceGroupName '<storage-account-rg >'要還原包含 CVM 與 CMK 關鍵細節的 JSON 設定檔,請執行以下 cmdlet:
$destination_path = 'C:\cvmcmkencryption_config.json' Get-AzStorageBlobContent -Blob $securedEncryptionInfoBlobName -Container $containerName -Destination $destination_path $encryptionObject = Get-Content -Path $destination_path | ConvertFrom-Json在先前提到的目標路徑產生 JSON 檔案後,執行以下 cmdlet 從 JSON 資料產生金鑰 blob 檔案:
$keyDestination = 'C:\keyDetails.blob' [io.file]::WriteAllBytes($keyDestination, [System.Convert]::FromBase64String($encryptionObject.OsDiskEncryptionDetails.KeyBackupData))要將金鑰還原回鑰匙庫或受管硬體安全模組(HSM),請執行以下 cmdlet:
Restore-AzKeyVaultKey -VaultName '<target_key_vault_name> ' -InputFile $keyDestination For MHSM Use, Restore-AzKeyVaultKey -HsmName '<target_mhsm_name>' -InputFile $keyDestination
現在,你可以用 CMK 建立一個新的 DES 加密類型,稱為 機密磁碟加密,應該會指向還原的金鑰。 這個 DES 應該有足夠的權限來成功還原。 如果你用新的金鑰庫或受管理的 HSM 來還原金鑰,那麼 備份管理服務 對它有足夠的權限。 了解如何授予金鑰庫或受管 HSM 存取權限。
將權限指派給 DES 和機密客體 VM 代理程式以進行還原
磁碟加密設定與機密訪客虛擬代理程式需要對金鑰庫或受管理 HSM 擁有權限。 若要提供權限,請遵循這些步驟:
關於金鑰保險庫:要授予金鑰金庫權限,你可以依照 文件中的以下步驟 操作,或依照以下步驟操作:
- 瀏覽至磁碟加密集執行個體。
- 選擇訊息: 要將磁碟、映像檔或快照與此磁碟加密組關聯,您必須授權金鑰庫 並授權權限。
對於受管HSM:要授予受管HSM權限,請依照以下步驟操作:
將新建立的 DES 指派為受管理 HSM 加密使用者角色:
- 在 Azure 入口網站,前往「管理型 HSM>設定」,然後選擇「本地 RBAC」。
- 要新增角色指派,請選擇 新增。
- 在 角色中,選擇 受管理的 HSM 加密用戶角色。
- 在 Scope 中,選擇還原的金鑰。 你也可以選擇 「所有鍵」。
- 在 安全主體中,選擇 新建立的 DES。
對機密訪客虛擬機代理(Confidential Guest VM Agent)分配必要的權限以啟動 CVM:
- 在 Azure 入口網站,前往「管理型 HSM>設定」,然後選擇「本地 RBAC」。
- 要新增角色指派,請選擇 新增。
- 在 角色 中,選擇 受管理的 HSM 加密服務加密使用者。
- 在 Scope 中,選擇還原的金鑰。 你也可以選擇 「所有鍵」。
- 在 安全主體中,選擇 機密訪客虛擬代理。