受控 HSM 災害復原
如果您的原始 HSM 遺失或因以下任何原因而無法使用,您可以建立完整的 HSM 複本:
- 遭到刪除,繼而清除。
- 所在區域發生嚴重失敗,導致所有成員分割區遭到終結。
如果您具有下列項目,您可以在相同或不同的區域中重新建立 HSM 執行個體:
以下是災害復原程序的步驟:
- 建立新的 HSM 執行個體。
- 啟動「安全性原則復原」。 系統會為安全性網域傳輸產生新的 RSA 金鑰組 (安全性網域交換金鑰),並以回應傳送,進而以 SecurityDomainExchangeKey (公開金鑰) 的形式供使用者下載。
- 建立並上傳「安全性網域傳輸檔案」。 您將需要為安全性網域加密的私密金鑰。 私密金鑰會在本機使用,且絕不會在此程序中傳輸至任何位置。
- 建立新 HSM 的備份。 您必須先備份才能進行還原,即使 HSM 是空的。 備份可讓您輕鬆地復原。
- 從來源 HSM 還原最新的 HSM 備份。
這些步驟可讓您手動將 HSM 的內容複寫至另一個區域。 HSM 名稱 (和服務端點 URI) 會有所不同,因此您可能必須變更應用程式設定,才能從不同的位置使用這些金鑰。
建立新的受控 HSM
使用 az keyvault create
命令建立受控 HSM。 此指令碼包含三個必要參數:資源群組名稱、HSM 名稱和地理位置。
您必須提供下列輸入,才能建立受控 HSM 資源:
- HSM 的名稱。
- 要放置在訂用帳戶中的資源群組。
- Azure 位置。
- 初始管理員的清單。
下列範例會在位於美國西部 3 位置的資源群組 ContosoResourceGroup 中,建立名為 ContosoMHSM2 的硬體安全模組 (HSM),並將目前登入的使用者設為唯一管理員。
oid=$(az ad signed-in-user show --query objectId -o tsv)
az keyvault create --hsm-name "ContosoMHSM2" --resource-group "ContosoResourceGroup" --location "westus3" --administrators $oid
注意
執行 create 命令可能需要幾分鐘的時間。 成功傳回之後,您即可啟動 HSM。
警告
受控 HSM 執行個體視為永遠使用中。 如果您選擇使用 --enable-purge-protection
旗標啟用清除保護,則需要支付整個保留期間的費用。
此命令的輸出會顯示您所建立之受控 HSM 的屬性。 兩個最重要屬性是:
- 名稱:在此範例中,此名稱為 ContosoMHSM。 您將在其他 Key Vault 命令中使用此名稱。
- hsmUri:在此範例中,URI 為 'https://contosomhsm2.managedhsm.azure.net.' 透過其 REST API 使用 HSM 的應用程式必須使用此 URI。
您的 Azure 帳戶現已取得在此受控 HSM 上執行任何作業的授權。 而且,沒有其他人已獲授權。
啟動安全性網域復原模式
在一般的建立程序中,我們會在此時初始化並下載新的 HSM 安全性網域。 不過,由於要執行災害復原程序,我們會要求 HSM 進入安全性網域復原模式,並改為下載安全性網域交換金鑰。 安全性網域交換金鑰是一個 RSA 公開金鑰,用來在安全性網域上傳至 HSM 之前予以加密。 對應的私密金鑰會在 HSM 內受到保護,以確保您的安全性網域內容在傳輸期間安全無虞。
az keyvault security-domain init-recovery --hsm-name ContosoMHSM2 --sd-exchange-key ContosoMHSM2-SDE.cer
建立來源 HSM 的安全性網域上傳 Blob
針對此步驟,您將需要:
- 您在上一個步驟中下載的安全性網域交換金鑰。
- 來源 HSM 的安全性網域。
- 用來加密安全性網域的私密金鑰 (至少達仲裁數目)。
az keyvault security-domain restore-blob
命令會執行下列作業:
- 使用您提供的私密金鑰將來源 HSM 的安全性網域解密。
- 建立安全性網域上傳 Blob,此 Blob 是使用我們在上一步下載的安全性網域交換金鑰進行加密
此步驟可以離線執行。
我們會在下列範例中使用 ContosoMHSM 的安全性網域、3 個對應的私人金鑰,以及安全性網域交換金鑰,來建立和下載加密的 Blob,我們將使用此 Blob 來上傳至 ContosoMHSM2,而 ContosoMHSM2 正在等候接收安全性網域。
az keyvault security-domain restore-blob --sd-exchange-key ContosoMHSM2-SDE.cer --sd-file ContosoMHSM-SD.json --sd-wrapping-keys cert_0.key cert_1.key cert_2.key --sd-file-restore-blob restore_blob.json
將安全性網域上傳 Blob 上傳至目的地 HSM
我們現在使用在上一步中建立的安全性網域上傳 Blob,並將其上傳至目的地 HSM,以完成安全性網域復原。 --restore-blob
旗標可用來防止在連線環境中公開金鑰。
az keyvault security-domain upload --hsm-name ContosoMHSM2 --sd-file restore_blob.json --restore-blob
現在,來源 HSM (ContosoMHSM) 和目的地 HSM (ContosoMHSM2) 具有相同的安全性網域。 我們現在可以將來源 HSM 的完整備份還原至目的地 HSM。
備份和還原
在執行完整的 HSM 還原之前,最好先進行完整備份,如此,萬一還原發生問題時,您將有還原點可供使用。 您可以使用下列兩種方法之一來執行此動作:使用者指派的受控識別或 SAS 權杖。
建立新 HSM 的備份 (作為還原點)
若要建立 HSM 備份,您需要以下項目:
- 將用來儲存備份的儲存體帳戶
- 此儲存體帳戶中的 Blob 儲存體容器;備份程序會在其中建立新資料夾來儲存加密備份
- 使用者指派的受控識別,其具有儲存體帳戶或儲存體容器 SAS 權杖上具有權限 'crdw' 的儲存體 Blob 資料參與者角色
我們會對儲存體容器 mhsmbackupcontainer 中的 HSM 備份使用 az keyvault backup 命令,該儲存體容器位於以下範例的儲存體帳戶 mhsmdemobackup。
如果使用使用者指派的受控識別方法,我們會使用 --mi-user-assigned
參數指定使用者指派的受控識別,並在下列範例中寫入備份之前,將該識別與受控 HSM 產生關聯。
az keyvault update-hsm --hsm-name ContosoMHSM2 --mi-user-assigned "/subscriptions/subid/resourcegroups/mhsmrgname/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedidentityname"
az keyvault backup start --use-managed-identity true --hsm-name ContosoMHSM2 --storage-account-name mhsmdemobackup --blob-container-name mhsmbackupcontainer
從來源 HSM 還原備份
在此步驟中,您需要以下項目:
- 來源 HSM 的備份儲存所在的儲存體帳戶和 Blob 容器。
- 您要從中還原備份的資料夾名稱。 如果您建立定期備份,此容器內將會有許多資料夾。
我們會使用嘗試還原的來源 MHSM 備份,在新的 HSM ContosoMHSM2 中使用 az keyvault restore 命令,該備份位於下列範例中儲存體帳戶 ContosoBackup 的儲存體容器 mhsmdemobackupcontainer 中找到之名為 mhsm-ContosoMHSM-2020083120161860 的資料夾中。
如果使用使用者指派的受控識別方法,我們會將 --use-managed-identity
參數設定為 "true"。
az keyvault restore start --hsm-name ContosoMHSM2 --storage-account-name ContosoBackup --blob-container-name mhsmdemobackupcontainer --backup-folder mhsm-ContosoMHSM-2020083120161860 --use-managed-identity true
現在,您已完成完整的災害復原程序。 取得備份時的來源 HSM 內容會複製到目的地 HSM,包括所有的金鑰、版本、屬性、標籤和角色指派。
下一步
- 請參閱關於受控 HSM 安全性網域,以深入了解安全性網域的詳細資訊
- 遵循受控 HSM 最佳做法