共用方式為

Azure Key Vault软删除概述

重要

如果密钥保管库未启用软删除保护,则删除密钥会将它永久删除。 强烈建议客户通过 Azure Policy 为其保管库启用软删除强制实施。

重要

软删除Key Vault时,会删除与Key Vault集成的服务。 例如:Azure RBAC 角色分配和事件网格订阅。 软删除状态下的密钥保管库恢复后不会还原这些服务。 必须重新创造它们。

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

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

支持接口

软删除功能可通过 REST API 提供, Azure CLIAzure PowerShell.NET/C# 接口和ARM 模板

情景

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

  1. 在典型情况下,用户无意中删除了一个密钥保管库或密钥保管库对象;如果该密钥保管库或密钥保管库对象在预定时间内可以恢复,用户就可以撤销删除并恢复数据。

  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清除操作员”Azure RBAC 角色的用户才能清除key vault。 POST 操作可触发立即删除该保管库,且此删除不可恢复。

例外情况包括:

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

有关步骤,请参阅如何在 CLI 中使用Key Vault软删除:清除 key vault如何在 PowerShell 中使用 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 将计划删除与已删除的密钥保管库或密钥保管库对象对应的基础数据,以便在预先设定的保留间隔后执行删除操作。 在保留间隔期间,还会保留与保管库相对应的 DNS 记录。

软删除保留期

软删除的资源将保留一定的时间,具体为 90 天。 在软删除保留期间,以下条款适用:

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

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

计费影响

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

  • “清除”和“恢复”操作将计入正常密钥保管库操作,并将收费。
  • 如果对象为 HSM 密钥,且在过去 30 天内使用过密钥版本,则会对“受 HSM 保护的密钥”按每月每个密钥版本收费。 之后,由于该对象处于已删除状态,无法对其执行任何操作,因此不会产生任何费用。

后续步骤

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