分享方式:


完整備份和還原及選擇性金鑰還原

注意

此功能僅適用於資源類型受控 HSM。

受控 HSM 支援建立所有 HSM 內容的完整備份,包括所有金鑰、版本、屬性、標籤和角色指派。 備份會使用與 HSM 的安全性網域相關聯的密碼編譯金鑰進行加密。

備份是一項資料平面作業。 起始備份作業的呼叫者必須具有執行 dataAction Microsoft.KeyVault/managedHsm/backup/start/action 的權限。

只有下列內建角色才具有執行完整備份的權限:

  • 受控 HSM 管理員
  • 受控 HSM 備份

有兩種方式可執行完整備份/還原:

  1. 將使用者指派的受控識別 (UAMI) 指派給受控 HSM 服務。 不論您的儲存體帳戶是否已啟用公用網路存取或私人網路存取,您都可以使用使用者指派的受控識別來備份及還原 MHSM。 如果儲存體帳戶位於私人端點後方,UAMI 方法會與信任的服務略過搭配運作,以允許備份和還原。
  2. 使用具有權限 'crdw' 的儲存體容器 SAS 權杖。 使用儲存體容器 SAS 權杖進行備份和還原時,您的儲存體帳戶必須啟用公用網路存取。

您必須提供下列資訊,才能執行完整備份:

  • HSM 名稱或 URL
  • 儲存體帳戶名稱
  • 儲存體帳戶 Blob 儲存體容器
  • 具有權限 'crdw' 的使用者指派的受控識別或儲存體容器 SAS 權杖

Azure Cloud Shell

Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 Azure Cloud Shell 的「試試看」範例螢幕擷取畫面。
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 啟動 Azure Cloud Shell 的按鈕。
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 顯示 Azure 入口網站中 Cloud Shell 按鈕的螢幕擷取畫面

若要使用 Azure Cloud Shell:

  1. 啟動 Cloud Shell。

  2. 選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。

  3. 透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。

  4. 選取 Enter 鍵執行程式碼或命令。

使用使用者指派的受控識別進行備份和還原時的必要條件:

  1. 確定您有 Azure CLI 2.56.0 版或更新版本。 執行 az --version 以尋找版本。 如果您需要安裝或升級,請參閱安裝 Azure CLI 模組
  2. 建立使用者指派的受控識別。
  3. 建立儲存體帳戶 (或使用現有的儲存體帳戶)。
  4. 如果您的儲存體帳戶停用了公用網路存取,請在 [例外狀況] 之下的 [網路] 索引標籤中,為儲存體帳戶啟用信任的服務略過。
  5. 移至入口網站上的 [存取控制] 索引標籤,為在步驟 2 中建立的使用者指派受控識別提供「儲存體 Blob 資料參與者」角色存取權 -> 新增角色指派。 然後選取 [受控識別],並選取在步驟 2 -> 檢閱 + 指派中建立的受控識別
  6. 建立受控 HSM,並將受控識別與下列命令產生關聯。
    az keyvault create --hsm-name mhsmdemo2 –l mhsmlocation -- retention-days 7 --administrators "initialadmin" --mi-user-assigned "/subscriptions/subid/resourcegroups/mhsmrgname/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedidentitynamefromstep2" 
    

如果您有現有的受控 HSM,請使用下列命令更新 MHSM,以建立受控識別的關聯。

 az keyvault update-hsm --hsm-name mhsmdemo2 --mi-user-assigned "/subscriptions/subid/resourcegroups/mhsmrgname/providers/Microsoft.ManagedIdentity/userAssignedIdentities/userassignedidentitynamefromstep2" 

完整備份

備份是長時間執行的作業,但會立即傳回作業識別碼。 您可以使用此作業識別碼來檢查備份程序的狀態。 備份程序會使用下列命名模式 mhsm-{HSM_NAME}-{YYYY}{MM}{DD}{HH}{mm}{SS} 在指定的容器內建立資料夾,其中,HSM_NAME 是要備份的受控 HSM 名稱,而 YYYY、MM、DD、HH、MM、mm、SS 依序是收到備份命令時的日期/時間 (UTC) 中的年、月、日、小時、分鐘和秒。

在備份進行時,HSM 可能無法以完整輸送量運作,因為有些 HSM 分割區會忙於執行備份作業。

使用使用者指派的受控識別備份 HSM

az keyvault backup start --use-managed-identity true --hsm-name mhsmdemo2 --storage-account-name mhsmdemobackup --blob-container-name mhsmdemobackupcontainer

使用 SAS 權杖備份 HSM

# time for 500 minutes later for SAS token expiry

end=$(date -u -d "500 minutes" '+%Y-%m-%dT%H:%MZ')

# Get storage account key

skey=$(az storage account keys list --query '[0].value' -o tsv --account-name mhsmdemobackup --subscription {subscription-id})

# Create a container

az storage container create --account-name  mhsmdemobackup --name mhsmdemobackupcontainer  --account-key $skey

# Generate a container sas token

sas=$(az storage container generate-sas -n mhsmdemobackupcontainer --account-name mhsmdemobackup --permissions crdw --expiry $end --account-key $skey -o tsv --subscription {subscription-id})

# Backup HSM

az keyvault backup start --hsm-name mhsmdemo2 --storage-account-name mhsmdemobackup --blob-container-name mhsmdemobackupcontainer --storage-container-SAS-token $sas --subscription {subscription-id}

完整還原

完整還原可讓您使用先前的備份完整還原 HSM 的內容,包括所有金鑰、版本、屬性、標籤和角色指派。 目前儲存在 HSM 中的所有項目都將抹除,且會回復為建立來源備份時的相同狀態。

重要

完整還原是具破壞性和干擾性的作業。 因此,必須在執行 restore 作業前至少 30 分鐘,對您要還原的目標 HSM 完成完整備份。

還原是一項資料平面作業。 啟動還原作業的呼叫者必須具有執行 dataAction Microsoft.KeyVault/managedHsm/restore/start/action 的權限。 備份建立所在的來源 HSM 和將執行還原的目的地 HSM 必須具有相同的安全性網域。 請參閱關於受控 HSM 安全性網域以了解詳細資訊。

有 2 種方式可執行完整還原。 您必須提供下列資訊,才能執行完整還原:

  • HSM 名稱或 URL
  • 儲存體帳戶名稱
  • 儲存體帳戶 Blob 容器
  • 具有權限 rl 的使用者指派的受控識別或儲存體容器 SAS 權杖
  • 來源備份儲存所在的儲存體容器資料夾名稱

還原是長時間執行的作業,但會立即傳回作業識別碼。 您可以使用此作業識別碼來檢查還原程序的狀態。 在還原程序進行時,HSM 會進入還原模式,並停用所有資料平面命令 (檢查還原狀態除外)。

使用使用者指派的受控識別還原 HSM

az keyvault restore start --hsm-name mhsmdemo2 --storage-account-name mhsmdemobackup --blob-container-name mhsmdemobackupcontainer --backup-folder mhsm-backup-foldername --use-managed-identity true

使用 SAS 權杖還原 HSM

# time for 500 minutes later for SAS token expiry

end=$(date -u -d "500 minutes" '+%Y-%m-%dT%H:%MZ')

# Get storage account key

skey=$(az storage account keys list --query '[0].value' -o tsv --account-name mhsmdemobackup --subscription {subscription-id})

# Generate a container sas token

sas=$(az storage container generate-sas -n mhsmdemobackupcontainer --account-name mhsmdemobackup --permissions rl --expiry $end --account-key $skey -o tsv --subscription {subscription-id})

# Restore HSM

az keyvault restore start --hsm-name mhsmdemo2 --storage-account-name mhsmdemobackup --blob-container-name mhsmdemobackupcontainer --storage-container-SAS-token $sas --backup-folder mhsm-mhsmdemo-2020083120161860

選擇性金鑰還原

選擇性金鑰還原可讓您使用先前備份中一個個別金鑰的所有金鑰版本,將該個別金鑰還原至 HSM。 為了讓選擇性金鑰還原可正常運作,必須先清除金鑰。 如果您嘗試復原已虛刪除的金鑰,請使用金鑰復原。 深入了解金鑰復原

使用使用者指派的受控識別的選擇性金鑰還原

az keyvault restore start --hsm-name mhsmdemo2 --storage-account-name mhsmdemobackup --blob-container-name mhsmdemobackupcontainer --backup-folder mhsm-backup-foldername --use-managed-identity true --key-name rsa-key2

使用 SAS 權杖的選擇性金鑰還原

az keyvault restore start --hsm-name mhsmdemo2 --storage-account-name mhsmdemobackup --blob-container-name mhsmdemobackupcontainer --storage-container-SAS-token $sas --backup-folder mhsm-mhsmdemo-2020083120161860 -–key-name rsa-key2

後續步驟