Azure Key Vault 软删除概述
重要
如果密钥保管库未启用软删除保护,则删除密钥会将它永久删除。 强烈建议客户通过 Azure Policy 为其保管库启用强制软删除功能。
重要
软删除 Key Vault 时,将删除与 Key Vault 集成的服务。 例如:Azure RBAC 角色分配和事件网格订阅。 恢复软删除的 Key Vault 不会还原这些服务。 将需要重新创建这些服务。
Key Vault 的软删除功能可用于恢复已删除的保管库和已删除的密钥保管库对象(例如,密钥、机密、证书),因而被称为软删除。 本文将具体探讨以下方案:此保护机制提供以下保护:
- 机密、密钥、证书或密钥保管库在被删除之后,在一个可配置的时段(7 到 90 个日历日)内将一直保持可恢复状态。 如果未指定配置,则默认恢复期会被设置为 90 天,以便用户有足够的时间注意到机密被意外删除并做出反应。
- 若要永久删除机密,必须执行两个操作。 首先,用户必须删除该对象,使其处于软删除状态。 接下来,用户必须清除处于软删除状态的对象。 这些保护措施减少了用户意外或恶意删除机密或密钥保管库的风险。
- 要清除处于软删除状态的机密、密钥和证书,则必须授予安全负责人“清除”操作权限(例如,“密钥保管库”内置角色“密钥保管库清除操作员”)。
支持接口
软删除功能是通过 REST API、Azure CLI、Azure PowerShell 和 .NET/C# 接口以及 ARM 模板提供的。
方案
Azure Key Vault 是由 Azure Resource Manager 管理的跟踪资源。 Azure Resource Manager 还指定了定义明确的删除行为,要求成功的删除操作必须使该资源不再可供访问。 软删除功能解决了已删除对象的恢复问题,无论是意外删除还是有意删除。
在典型情况下,用户无意中删除了一个密钥保管库或密钥保管库对象;如果该密钥保管库或密钥保管库对象在预定时间内可以恢复,用户就可以撤销删除并恢复数据。
在不同的方案中,恶意用户可能会尝试删除 Key Vault 或 Key Vault 对象(例如保管库内的密钥),导致业务中断。 作为一项安全措施,可将 Key Vault 或 Key Vault 对象的删除与基础数据的实际删除区分开来,例如,将数据删除权限仅授予另一个受信任角色。 此方法实际上需要对可能导致数据立即丢失的操作进行仲裁。
软删除行为
启用软删除后,标记为“已删除资源”的资源将保留指定的时间(默认为 90 天)。 该服务进一步提供了用于恢复已删除对象的机制,实质上是撤消删除。
创建新的密钥保管库时,默认情况下将启用软删除。 在密钥保管库上启用软删除后,就不能将其禁用。
只能在创建密钥保管库期间配置保留策略间隔,并且之后无法更改。 您可以将其设置为 7 至 90 天,而默认值为 90 天。 相同的间隔适用于软删除和清除保护保留策略。
在保留期到期之前,无法重复使用已被软删除的密钥保管库名称。
清除保护
清除保护是一种可选的 Key Vault 行为,默认未启用。 只有启用软删除后才能启用清除保护。 建议在使用密钥进行加密时进行清除保护,以防止数据丢失。 大多数与 Azure Key Vault 集成的 Azure 服务(例如存储)都需要清除保护以防止数据丢失。
启用清除保护后,在保留期结束之前,无法清除处于已删除状态的保管库或对象。 软删除的保管库和对象仍可恢复,从而确保遵循保留策略。
默认保留期为 90 天,但可以通过 Azure 门户将保留策略间隔值设置为 7 到 90 天。 设置并保存保留策略间隔后,将无法更改该保管库的保留策略间隔。
可以使用 CLI、PowerShell 或 Portal 来开启清除保护。
允许的清除
可通过对代理资源执行 POST 操作永久删除、清除 Key Vault,但此操作需要特殊权限。 一般来说,只有订阅所有者或具有“密钥保管库清除操作员”RBAC 角色的用户才能清除密钥保管库。 POST 操作可触发立即删除该保管库,且此删除不可恢复。
例外情况包括:
- 当 Azure 订阅被标记为“不可删除”。 在这种情况下,只有服务可以执行实际删除,并且将作为计划的进程执行此操作。
- 在保管库上启用了
--enable-purge-protection
参数时。 在这种情况下,Key Vault 将自原始机密对象标记为删除以永久删除该对象起等待 7 到 90 天。
有关步骤,请参阅如何将 Key Vault 软删除与 CLI 配合使用:清除密钥保管库或如何通过 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 将计划在预设的保留间隔后删除与已删除 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 对象及其内容。 可能无法重新计划资源删除操作。
计费影响
一般情况下,如果对象(密钥保管库或密钥或机密)处于已删除状态,仅可执行两个操作:“清除”和“恢复”。 所有其他操作都会失败。 因此,即使对象存在,也不可执行任何操作,因此不会出现使用情况,也不会计费。 但是存在以下例外:
- “清除”和“恢复”操作计为正常密钥保管库操作并收费。
后续步骤
以下三个指南提供有关使用软删除的主要使用方案。