Azure Key Vault 软删除概述

重要

必须立即对密钥保管库启用软删除。 选择退出软删除的功能已弃用,并且将于 2025 年 2 月删除。 请参阅此处的完整详细信息。

重要

软删除 Key Vault 时,将删除与 Key Vault 集成的服务。 例如:Azure RBAC 角色分配和事件网格订阅。 恢复软删除的 Key Vault 不会还原这些服务。 将需要重新创建这些服务。

Key Vault 的软删除功能可用于恢复已删除的保管库和已删除的密钥保管库对象(例如,密钥、机密、证书),因而被称为软删除。 本文将具体探讨以下方案:此保护机制提供以下保护:

  • 机密、密钥、证书或密钥保管库在被删除之后,在一个可配置的时间段( 7 到 90 个日历日)内将一直保持可恢复状态。 如果未指定配置,默认恢复期将会被设置为 90 天。 这样,用户就有充足的时间来注意到意外的机密删除并做出响应。
  • 若要永久删除机密,必须执行两个操作。 首先,用户必须删除该对象,使其处于软删除状态。 接下来,用户必须清除处于软删除状态的对象。 这些附加的保护措施减少了用户意外或恶意删除机密或密钥保管库的风险。
  • 若要清除处于软删除状态的机密、密钥、证书,必须向安全主体授予“清除”操作权限。

支持接口

软删除功能是通过 REST APIAzure CLIAzure PowerShell.NET/C# 接口以及 ARM 模板提供的。

方案

Azure Key Vault 是由 Azure Resource Manager 管理的跟踪资源。 Azure Resource Manager 还指定了定义明确的删除行为,要求成功的删除操作必须使该资源不再可供访问。 软删除功能解决了已删除对象的恢复问题,无论是意外删除还是有意删除。

  1. 在典型方案中,用户可能无意中删除了 Key Vault 或 Key Vault 对象;如果 Key Vault 或 Key Vault 对象在预定时间段内可恢复,则用户可以撤消删除并恢复其数据。

  2. 在不同的方案中,恶意用户可能会尝试删除 Key Vault 或 Key Vault 对象(例如保管库内的密钥),导致业务中断。 作为一项安全措施,可将 Key Vault 或 Key Vault 对象的删除与基础数据的实际删除区分开来,例如,将数据删除权限仅授予另一个受信任角色。 此方法实际上需要对可能导致数据立即丢失的操作进行仲裁。

软删除行为

启用软删除后,标记为“已删除资源”的资源将保留指定的时间(默认为 90 天)。 该服务进一步提供了用于恢复已删除对象的机制,实质上是撤消删除。

创建新的密钥保管库时,默认情况下将启用软删除。 在密钥保管库上启用软删除后,将无法禁用软删除。

只能在创建密钥保管库期间配置保留策略间隔,并且之后无法更改。 可以选择将其设置为 7 到 90 天,默认值为 90 天。 相同的间隔适用于软删除和清除保护保留策略。

在保留期结束之前,无法重复使用已软删除的密钥保管库的名称。

清除保护

清除保护是一种可选的 Key Vault 行为,默认未启用。 只有启用软删除后才能启用清除保护。 建议在使用密钥进行加密时进行清除保护,以防止数据丢失。 大多数与 Azure Key Vault 集成的 Azure 服务(例如存储)都需要清除保护以防止数据丢失。

启用清除保护后,在保留期结束之前,无法清除处于已删除状态的保管库或对象。 软删除的保管库和对象仍可恢复,这可以确保遵循保留策略。

默认保留期为 90 天,但可以通过 Azure 门户将保留策略间隔值设置为 7 到 90 天。 设置并保存保留策略间隔后,将无法更改该保管库的保留策略间隔。

可以使用 CLIPowerShellPortal 开启清除保护。

允许的清除

可通过对代理资源执行 POST 操作永久删除、清除 Key Vault,但此操作需要特殊权限。 通常,只有订阅所有者才能清除 Key Vault。 POST 操作可触发立即删除该保管库,且此删除不可恢复。

例外情况包括:

  • Azure 订阅已被标记为“不可删除”。 在这种情况下,只有服务可以执行实际删除,并且将作为计划的进程执行此操作。
  • 在保管库上启用了 --enable-purge-protection 参数时。 在这种情况下,Key Vault 将自原始机密对象标记为删除以永久删除该对象起等待 7 到 90 天。

有关步骤,请参阅如何将 Key Vault 软删除与 CLI 配合使用:清除密钥保管库如何通过 PowerShell 使用 Key Vault 软删除:清除密钥保管库

Key Vault 恢复

删除 Key Vault 后,服务会在订阅下创建代理资源,为恢复添加足够的元数据。 代理资源是一个存储对象,位于与已删除 Key Vault 相同的位置。

Key Vault 对象恢复

删除密钥保管库对象(例如密钥)时,服务会将该对象置于已删除状态,使其不可供任何检索操作访问。 在此状态下,只能列出、恢复或强制/永久删除 Key Vault 对象。 若要查看对象,请使用 Azure CLI az keyvault key list-deleted 命令(按照如何通过 CLI 使用 Key Vault 软删除中的说明)或 Azure PowerShell Get-AzKeyVault -InRemovedState 命令(按照如何通过 PowerShell 使用 Key Vault 软删除中的说明)。

同时,Key Vault 将计划在预设的保留间隔后删除与已删除 Key Vault 或 Key Vault 对象对应的基础数据。 在保留间隔内,还会保留与该保管库相对应的 DNS 记录。

软删除保留期

软删除的资源将保留设定的一段时间(90 天)。 在软删除保留间隔内,以下情况属实:

  • 可列出订阅中处于软删除状态的所有 Key Vault 和 Key Vault 对象,并可访问与这些对象有关的删除和恢复信息。
    • 只有具有特殊权限的用户才能列出已删除的保管库。 我们建议用户创建一个具有这些特殊权限的自定义角色来处理已删除的保管库。
  • 无法在同一位置创建具有相同名称的密钥保管库;相应地,在创建密钥保管库对象时,如果密钥保管库中包含具有相同名称且处于已删除状态的对象,则无法在其中创建该对象。
  • 只有特权用户可以还原 Key Vault 或 Key Vault 对象,方法是对相应的代理资源发出恢复命令。
    • 有权在资源组下创建 key vault 的用户(自定义角色的成员)可以还原该保管库。
  • 只有特权用户可以强制删除 Key Vault 或 Key Vault 对象,方法是对相应的代理资源发出删除命令。

除非恢复 Key Vault 或 Key Vault 对象,否则在保留间隔结束时,服务会清除已软删除的 Key Vault 或 Key Vault 对象及其内容。 可能无法重新计划资源删除操作。

计费影响

一般情况下,如果对象(密钥保管库或密钥或机密)处于已删除状态,仅可执行两个操作:“清除”和“恢复”。 所有其他操作都会失败。 因此,即使对象存在,也不可执行任何操作,因此不会出现使用情况,也不会计费。 但是存在以下例外:

  • “清除”和“恢复”操作计为正常密钥保管库操作并收费。

后续步骤

以下三个指南提供有关使用软删除的主要使用方案。