共用方式為

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

注意

此功能仅适用于托管的 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 存储容器
  • 具有权限的用户分配托管标识 存储容器 SAS 令牌 crdw

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

  1. 确保您已安装 Azure CLI 版本 2.56.0 或更高版本。 运行 az --version 即可查找版本。 如果需要安装或升级,请参阅 安装 Azure CLI
  2. 创建用户分配的托管标识。
  3. 创建存储帐户(或使用现有存储帐户)。 存储帐户无法应用不可变性策略。
  4. 如果在存储帐户上禁用了公用网络访问,请在“网络”选项卡的“例外”下启用存储帐户的受信任服务绕过功能。
  5. 通过转到门户上的访问控制选项卡并选择添加角色分配,为步骤 2 中创建的用户分配托管标识提供Storage Blob Data Contributor角色访问权限。 然后选择托管标识,然后选择在步骤 2 ->Review + Assign 中创建的托管标识
  6. 创建托管 HSM 并关联托管标识:
    az keyvault create --hsm-name <hsm-name> -l <location> --retention-days 7 --administrators "<initial-admin>" --mi-user-assigned "/subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>" 
    

如果拥有现有托管 HSM,请通过运行以下命令来更新 MHSM,以关联托管标识。

 az keyvault update-hsm --hsm-name <hsm-name> --mi-user-assigned "/subscriptions/<subscription-id>/resourcegroups/<resource-group>/providers/Microsoft.ManagedIdentity/userAssignedIdentities/<managed-identity-name>" 

完整备份

备份是长时间运行的操作,但它会立即返回作业 ID。 可以使用此作业 ID 检查备份过程的状态。 备份过程使用以下命名模式在指定容器中创建一个文件夹: mhsm-{HSM_NAME}-{YYYY}{MM}{DD}{HH}{mm}{SS} 在此模式中,HSM_NAME是要备份的托管 HSM 的名称,YYYYMMDDHHmmSS分别代表接收备份命令时的年、月、日、小时、分钟和秒的UTC日期和时间。

备份正在进行时,HSM 可能无法以完全吞吐量运行,因为某些 HSM 分区正忙于执行备份作。

注意

不支持备份应用不可变策略的存储帐户。

使用用户分配的托管标识备份 HSM

az keyvault backup start --use-managed-identity true --hsm-name <hsm-name> --storage-account-name <storage-account-name> --blob-container-name <container-name>

使用 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 <storage-account-name> --subscription <subscription-id>)

# Create a container

az storage container create --account-name <storage-account-name> --name <container-name> --account-key $skey

# Generate a container sas token

sas=$(az storage container generate-sas -n <container-name> --account-name <storage-account-name> --permissions crdw --expiry $end --account-key $skey -o tsv --subscription <subscription-id>)

# Backup HSM

az keyvault backup start --hsm-name <hsm-name> --storage-account-name <storage-account-name> --blob-container-name <container-name> --storage-container-SAS-token $sas --subscription <subscription-id>

完整还原

完全还原将从以前的备份还原 HSM 的内容,包括所有密钥、版本、属性、标记和角色分配。 此过程删除当前存储在 HSM 中的所有内容,并将其返回到创建源备份时所在的相同状态。

重要

完全还原是一种具有破坏性和中断性的操作。 因此,您必须在restore操作前至少 30 分钟完成对要还原的 HSM 的完整备份。

还原是一种数据平面操作。 启动还原操作的调用方必须有权执行 dataAction Microsoft。KeyVault/managedHsm/restore/start/action。 创建备份的源 HSM 和执行还原的目标 HSM 必须具有相同的安全域。 查看更多关于托管 HSM 安全域的信息

可以通过两种方式执行完全还原。 若要执行完整还原,请提供以下信息:

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

还原是一个耗时较长的操作,但它会立即返回作业标识。 可以使用此作业 ID 检查还原过程的状态。 还原过程正在进行时,HSM 会进入还原模式,并且禁用所有数据平面命令(检查还原状态除外)。

使用用户分配的托管标识还原 HSM

az keyvault restore start --hsm-name <hsm-name> --storage-account-name <storage-account-name> --blob-container-name <container-name> --backup-folder <backup-folder> --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 <storage-account-name> --subscription <subscription-id>)

# Generate a container sas token

sas=$(az storage container generate-sas -n <container-name> --account-name <storage-account-name> --permissions rl --expiry $end --account-key $skey -o tsv --subscription <subscription-id>)

# Restore HSM

az keyvault restore start --hsm-name <hsm-name> --storage-account-name <storage-account-name> --blob-container-name <container-name> --storage-container-SAS-token $sas --backup-folder <backup-folder>

选择性密钥还原

选择性密钥还原包括从以前的备份将一个密钥及其所有版本恢复到 HSM。 要使选择性密钥还原正常工作,必须清除密钥。 如果尝试恢复软删除的密钥,请使用密钥恢复。 详细了解密钥恢复

使用用户分配的托管标识进行选择性密钥还原

az keyvault restore start --hsm-name <hsm-name> --storage-account-name <storage-account-name> --blob-container-name <container-name> --backup-folder <backup-folder> --use-managed-identity true --key-name <key-name>

使用 SAS 令牌进行选择性密钥还原

az keyvault restore start --hsm-name <hsm-name> --storage-account-name <storage-account-name> --blob-container-name <container-name> --storage-container-SAS-token $sas --backup-folder <backup-folder> --key-name <key-name>

后续步骤