完整备份和还原以及选择性密钥还原

注意

此功能仅适用于资源类型托管 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 令牌

使用用户分配的托管标识进行备份和还原的先决条件:

  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" 

完整备份

备份是长期操作,但会立即返回作业 ID。 可使用此作业 ID 检查备份过程的状态。 备份过程会在指定容器中创建一个文件夹,该文件夹具有以下命名模式 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 中的所有内容都将被擦除,HSM 将返回到创建源备份时所处的状态。

重要

完整还原是一种破坏性很强的操作。 因此,必须在执行 restore 操作前至少 30 分钟已对要恢还原的 HSM 完成完整备份。

还原是一种数据平面操作。 启动还原操作的调用方必须具有执行 dataAction“Microsoft.KeyVault/managedHsm/restore/start/action”的权限。 在其中创建备份的源 HSM 以及将在其中执行还原的目标 HSM 必须具有相同的安全域。 详细了解托管 HSM 安全域

有 2 种方法可以执行完全还原。 若要执行完整还原,必须提供以下信息:

  • HSM 名称或 URL
  • 存储帐户名称
  • 存储帐户 blob 容器
  • 用户分配的托管标识或具有权限 rl 的存储容器 SAS 令牌
  • 存储源备份所在的存储容器文件夹名称

还原是长期操作,但会立即返回作业 ID。 可使用此作业 ID 检查还原过程的状态。 在还原过程中,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

后续步骤