你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。

使用 Azure 备份还原机密 VM(预览版)

重要

适用于机密虚拟机的 Azure 备份(VM)目前为预览版。 有关适用于 Beta 版、预览版或尚未正式发布的 Azure 功能的法律条款,请参阅 适用于 Microsoft azure 预览版的补充使用条款 。

本文介绍了如何通过使用 Azure 备份 恢复操作系统磁盘加密的机密虚拟机(CVM),使用平台托管密钥(PMK)或客户托管密钥(CMK)。 该文档说明了在不同密钥和磁盘加密集(DES)状态下的恢复行为,并提供了密钥丢失情况下的恢复流程。

了解 机密 VM 备份支持的场景。

支持的还原场景

Azure 备份 支持以下操作系统磁盘加密机密虚拟机的恢复场景:

类别 支持详细信息
还原类型 恢复虚拟机(备用位置恢复)、恢复虚拟机(原始位置恢复)和恢复磁盘
加密配置 根据恢复层级支持情况,使用原始加密配置或客户提供的替代磁盘加密集进行 OS 磁盘加密还原

有关支持边界和区域可用性,请参见 机密虚拟机备份的支持矩阵。

从快照层恢复

快照层恢复点支持以下场景:

情景 支持详细信息 还原步骤
备份时使用的原始密钥可在与同一DES关联的密钥存储中获得 支持 恢复时使用原始 DES
自备份执行后,密钥会被轮换 支持 密钥旋转也会传播到对应的快照。 恢复时使用原始 DES
备份时使用的原始密钥会被删除 不支持 不支持快照级恢复点
用新密钥封装恢复后的 CVM 操作系统磁盘 不支持 不支持快照级恢复点

如果你为一个同时具有快照层级和保管库层级的恢复点提供新的 DES,还原过程会尝试从保管库层级进行还原。

从保管库层级还原

Vault级恢复点支持以下场景:

情景 支持详细信息 还原步骤
备份时使用的原始密钥可在与同一DES关联的密钥存储中获得 支持 恢复时使用原始 DES
自备份执行后,密钥会被轮换 支持 遵循两步恢复流程。
DES 关联:已轮换的新密钥
备份时使用的原始密钥会从密钥存储中删除 支持 遵循两步恢复流程
用新密钥封装恢复后的 CVM 操作系统磁盘 支持 遵循两步恢复流程。
DES关联:新密钥

对于使用新密钥包装密钥进行保险库层级恢复:

  1. 提供与你要用于已还原 OS 磁盘的新密钥关联的 DES。
  2. 如果新的(包裹)密钥与原密钥(解包)不同,确保两个密钥都存在于同一个密钥库中。
  3. Azure 备份 在恢复时使用原始密钥展开备份数据,并用新密钥包裹恢复后的操作系统磁盘。

成功还原要求

当 Azure 备份 能够验证所需的加密关系时,恢复才会成功。

恢复点级别 Criteria
Snapshot 提供的磁盘加密集与原始版本相同。
拱顶 - 提供的 DES 与原始密钥库关联,且原始密钥存在。
- 提供的 DES 关联到另一个密钥库,该密钥库中从备份中恢复了原始密钥。

恢复流量

通过使用原始加密资产恢复

在以下情况下使用此选项:

  • 原始的DES资源是存在的。
  • 原始的 密钥保管库 资源仍然存在。
  • 必需的密钥仍然可用。

在此场景中:

  • 无需额外的加密配置。
  • Azure 备份 会自动重建虚拟机加密配置。

要使用原始加密资源恢复,请继续使用备份中的默认加密选项。

这是一张显示在机密虚拟机还原过程中磁盘加密集选项的截图。

如果你没有输入,默认会选择这个选项。 如果未满足成功恢复条件,恢复失败。

使用替代加密资产恢复

在以下情况下使用此选项:

  • 原始的密钥库被删除了。
  • 原始密钥被删除了。
  • 原始的DES资源无法获得。
  • 你需要用不同的密钥来封装恢复后的操作系统磁盘。
成功标准
  • 快照层的恢复不支持这种模式。
  • 与新DES关联的密钥库应包含备份时使用的原始密钥。 如有需要,恢复 丢失的钥匙。
  • 如果你在密钥包装和解包操作中使用不同的密钥,这两个密钥都必须位于同一密钥保管库中。 新密钥必须与所提供的DES关联。
操作系统磁盘加密配置

对于操作系统磁盘恢复,选择 “提供磁盘加密集”进行恢复 ,并选择有效的 DES。

截图显示了在机密虚拟机还原过程中更换磁盘加密集的选择。

注释

对于您为恢复操作提供的任何新 DES,备份服务都需要访问其所引用的密钥保管库。 所需权限:获取并列出密钥。 了解更多 关于权限分配的信息。

原始加密材料不可用时如何恢复

如果原始密钥被删除、禁用或无法访问:

  1. 触发恢复尝试。
  2. Azure 备份 将所需的密钥材料导出到配置好的预留位置。
  3. 将所需的密钥还原到由客户控制的 密钥保管库 中。
  4. 创建所需的磁盘加密集资源。
  5. 通过使用新创建的 DES 资源重新尝试恢复。

还原机密虚拟机的缺失密钥

如果还原操作失败,则需要还原 Azure 备份的密钥。

要通过PowerShell恢复密钥,请按照以下步骤操作:

  1. 要选择包含受保护CVM和CMK的保险库,请在命令中输入资源组和保险库名称,然后运行该命令。

    $vault = Get-AzRecoveryServicesVault -ResourceGroupName "<vault-rg>" -Name "<vault-name>"
    
  2. 若要列出过去七天内所有失败的还原作业,请运行以下 cmdlet。 如果要提取较旧的作业,请更新 cmdlet 中的日期范围。

    $Jobs = Get-AzRecoveryServicesBackupJob -From (Get-Date).AddDays(-7).ToUniversalTime() -Status Failed -Operation Restore -VaultId $vault.ID
    
  3. 若要从结果中选择失败的还原作业并获取作业详细信息,请运行以下 cmdlet:

    示例

    $JobDetails = Get-AzRecoveryServicesBackupJobDetail -Job $Jobs[0] -VaultId $vault.ID
    
  4. 若要从作业详细信息中获取密钥还原所需的所有参数,请运行以下 cmdlet:

    $properties = $JobDetails.properties
    $storageAccountName = $properties["Target Storage Account Name"]
    $containerName = $properties["Config Blob Container Name"]
    $securedEncryptionInfoBlobName = $properties["Secured Encryption Info Blob Name"]
    
  5. 若要选择用于还原的目标存储帐户,请在以下 cmdlet 中输入其资源组,然后运行 cmdlet:

    Set-AzCurrentStorageAccount -Name $storageaccountname -ResourceGroupName '<storage-account-rg >'
    
  6. 若要使用 CMK 还原包含 CVM 密钥详细信息的 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 
    
  7. 在前面提到的目标路径中生成 JSON 文件后,通过运行以下 cmdlet 从 JSON 数据生成密钥 Blob 文件:

    $keyDestination = 'C:\keyDetails.blob'
    [io.file]::WriteAllBytes($keyDestination, [System.Convert]::FromBase64String($encryptionObject.OsDiskEncryptionDetails.KeyBackupData)) 
    
  8. 若要在 密钥保管库 或托管硬件安全模块(HSM)中还原密钥,请运行以下 cmdlet:

    Restore-AzKeyVaultKey -VaultName '<target_key_vault_name> ' -InputFile $keyDestination
    For MHSM Use,  
    Restore-AzKeyVaultKey -HsmName '<target_mhsm_name>' -InputFile $keyDestination
    

现在,创建一个新的 DES,将加密类型设置为 使用 CMK 的机密磁盘加密,并将其指向已恢复的密钥。 在尝试恢复前,确保 DES 已要求密钥访问权限。 如果你用新的 密钥保管库 或 Managed HSM 恢复密钥,备份管理服务默认就拥有足够的权限。 了解如何授予 密钥保管库 或托管 HSM 的访问权限。

为 DES 和机密来宾 VM 代理分配还原权限

磁盘加密集和机密来宾 VM 代理需要对密钥保管库或托管 HSM 的权限。 要提供权限,请执行以下步骤:

对于 Key Vault:若要授予对 Key Vault 的权限,可以按照 文档中的 以下步骤或执行以下步骤:

  1. 导航到磁盘加密集实例。
  2. 选择消息“要将磁盘、映像或快照与此磁盘加密集关联,你必须向密钥保管库授予权限”并授予权限。

对于托管 HSM:若要向托管 HSM 授予权限,请执行以下步骤:

  1. 为新创建的 DES 分配托管 HSM 加密用户角色:

    1. 在 Azure 门户中,转到 “托管 HSM>设置”,然后选择“ 本地 RBAC”。
    2. 若要添加新的角色分配,请选择“ 添加”。
    3. 在 “角色”下,选择 “托管 HSM 加密用户角色”。
    4. 在 “作用域”下,选择还原的密钥。 还可以选择 “所有密钥”。
    5. 在 安全主体上,选择 新建的 DES。
  2. 为机密访客 VM 代理分配启动 CVM 所需的权限:

    1. 在 Azure 门户中,转到 “托管 HSM>设置”,然后选择“ 本地 RBAC”。
    2. 若要添加新的角色分配,请选择“ 添加”。
    3. 在 “角色”下,选择 “托管 HSM 加密服务加密用户”。
    4. 在 “作用域”下,选择还原的密钥。 还可以选择 “所有密钥”。
    5. 在 安全主体上,选择 机密客体 VM 代理。

权限更改后,允许 RBAC 传播,再尝试恢复。

还原失败故障排查

如果恢复操作失败,请使用以下检查:

  1. 验证 DES 是否存在,并且引用了预期的密钥和密钥版本。
  2. 验证源密钥没有被删除或禁用。
  3. 验证DES和Confidential Guest VM Agent是否拥有所需的权限。
  4. 在密钥恢复和权限传播后,重新尝试恢复操作。