如何将 Key Vault 软删除与 CLI 配合使用

Azure Key Vault 的软删除功能可以恢复已删除的保管库和保管库对象。 具体而言,软删除可解决以下方案:

  • 支持 Key Vault 的可恢复删除
  • 支持 Key Vault 对象、密钥、机密和证书的可恢复删除

先决条件

有关 CLI Key Vault 的特定参考信息,请参阅 Azure CLI 2.0 Key Vault 参考

所需的权限

Key Vault 操作通过基于角色的访问控制 (RBAC) 权限单独管理,如下所示:

操作 说明 用户权限
列出 列出已删除的 Key Vault。 Microsoft.KeyVault/deletedVaults/read
恢复 还原已删除的 Key Vault。 Microsoft.KeyVault/vaults/write
清除 永久移除已删除的 Key Vault 及其所有内容。 Microsoft.KeyVault/locations/deletedVaults/purge/action

有关权限和访问控制的详细信息,请参阅保护 Key Vault

启用软删除

若要能够恢复已删除的 Key Vault 或存储在 Key Vault 中的对象,必须首先为该 Key Vault 启用软删除。

现有的 Key Vault

对于名为 ContosoVault 的现有 Key Vault,请按如下所示启用软删除。

Note

目前,需要使用 Azure 资源管理器资源操作直接将 enableSoftDelete 属性写入 Key Vault 资源。

az resource update --id $(az keyvault show --name ContosoVault -o tsv | awk '{print $1}') --set properties.enableSoftDelete=true

新的 Key Vault

通过向创建命令添加软删除启用标志,在创建时启用对新 Key Vault 的软删除。

az keyvault create --name ContosoVault --resource-group ContosoRG --enable-soft-delete true --location ChinaNorth

验证软删除支持

若要验证 Key Vault 是否启用了软删除,请运行 show 命令,并查找“Soft Delete Enabled?” 属性及其设置(true 或 false)。

az keyvault show --name ContosoVault

删除由软删除保护的 Key Vault

删除(或移除)Key Vault 的命令保持不变,但其行为根据是否启用了软删除而改变。

az keyvault delete --name ContosoVault

Important

如果为没有启用软删除的 Key Vault 运行上一个命令,则将永久删除此 Key Vault 及其所有内容,而没有任何恢复选项。

软删除如何保护 Key Vault

已启用软删除:

  • 删除一个 Key Vault 时,将它从其资源组中删除,放置在一个仅与其创建位置相关联的保留命名空间中。
  • 无法访问删除的 Key Vault 中的对象(例如密钥、机密和证书),并且在包含它们的 Key Vault 处于已删除状态时依然如此。
  • 处于已删除状态的 Key Vault 的 DNS 名称仍然保留,因此无法创建同名的新 Key Vault。

使用以下命令,可查看与订阅关联且处于已删除状态的 Key Vault:

az keyvault list-deleted

输出中的“Resource ID”是指该保管库的原始资源 ID。 由于此 Key Vault 现在处于已删除状态,因此该资源 ID 不存在任何资源。 “Id”字段可用于在恢复或清除时识别资源。 “Scheduled Purge Date”字段指示如果不对此已删除的保管库执行任何操作,会永久删除(清除)该保管库的时间。 用于计算“Scheduled Purge Date”的默认保留期是 90 天。

恢复 Key Vault

若要恢复 Key Vault,需要指定 Key Vault 名称、资源组和位置。 请注意已删除的 Key Vault 的位置和资源组,以便用于 Key Vault 恢复过程。

az keyvault recover --location ChinaNorth --name ContosoVault

恢复 Key Vault 后,会得到具有 Key Vault 原始资源 ID 的新资源。 如果 Key Vault 所在的资源组已被删除,则必须先创建同名的新资源组,然后才能恢复 Key Vault。

Key Vault 对象和软删除

下面介绍对于密钥“ContosoFirstKey”,在启用了软删除的名为“ContosoVault”的 Key Vault 中,如何删除该密钥。

az keyvault key delete --name ContosoFirstKey --vault-name ContosoVault

为软删除启用 Key Vault 后,删除的密钥仍然显示为已删除,除非明确列出或检索已删除的密钥。 对处于已删除状态的密钥的大多数操作会失败,列出、恢复或清除已删除的密钥除外。

例如,若要请求列出 Key Vault 中已删除的密钥,请使用以下命令:

az keyvault key list-deleted --vault-name ContosoVault

转换状态

在启用了软删除的 Key Vault 中删除密钥时,可能需要几秒钟时间完成转换。 在此转换状态期间,密钥可能不处于活动状态或已删除状态。 此命令会列出名为“ContosoVault”的 Key Vault 中的所有已删除的密钥。

az keyvault key list-deleted --vault-name ContosoVault

将软删除用于 Key Vault 对象

就像 Key Vault 一样,除非恢复或清除已删除的密钥、机密或证书,否则它会保持已删除状态最多 90 天。

密钥

恢复已删除的密钥:

az keyvault key recover --name ContosoFirstKey --vault-name ContosoVault

永久删除密钥:

az keyvault key purge --name ContosoFirstKey --vault-name ContosoVault

Note

清除密钥会永久删除,这意味着无法恢复。

“恢复”和“清除”操作在 Key Vault 访问策略中各自具有相关联的权限。 用户或服务主体若要执行“恢复”或“清除”操作,必须在 Key Vault 访问策略中具有该对象(密钥或机密)的相应权限。 默认情况下,使用“全部”快捷方式向用户授予所有权限时,“清除”权限不会添加到 Key Vault 访问策略中。 必须明确授予“清除”权限。 例如,以下命令授予 user@contoso.com 对“ContosoVault”中的密钥执行多项操作(包括“清除”)的权限。

设置 Key Vault 访问策略

az keyvault set-policy --name ContosoVault --key-permissions get create delete list update import backup restore recover purge

Note

如果现有 Key Vault 刚刚启用软删除,则可能没有“恢复”和“清除”权限。

机密

像密钥一样,Key Vault 中的机密都用自己的命令进行操作。 以下是删除、列出、恢复和清除机密的命令。

  • 删除名为 SQLPassword 的机密:

    az keyvault secret delete --vault-name ContosoVault -name SQLPassword
    
  • 列出 Key Vault 中所有已删除的机密:

    az keyvault secret list-deleted --vault-name ContosoVault
    
  • 恢复处于已删除状态的机密:

    az keyvault secret recover --name SQLPassword --vault-name ContosoVault
    
  • 清除处于已删除状态的机密:

    az keyvault secret purge --name SQLPAssword --vault-name ContosoVault
    

Note

清除机密会永久删除,这意味着无法恢复。

清除和 Key Vault

Key Vault 对象

清除密钥、机密或证书会永久删除,这意味着无法恢复。 然而,包含已删除对象的 Key Vault 会保持不变,Key Vault 中的所有其他对象也会保持不变。

Key Vault 作为容器

清除 Key Vault 时,会永久删除其所有内容(包括密钥、机密和证书)。 若要清除 Key Vault,请使用 az keyvault purge 命令。 可使用命令 az keyvault list-deleted 找到订阅中已删除的密钥保管库的位置。

az keyvault purge --location ChinaNorth --name ContosoVault

Note

清除 Key Vault 会将其永久删除,这意味着无法恢复。

所需的清除权限

  • 若要清除已删除的 Key Vault,以便永久删除保管库及其所有内容,用户需要 RBAC 权限执行 Microsoft.KeyVault/locations/deletedVaults/purge/action 操作。
  • 若要列出已删除的密钥,用户需要 RBAC 权限执行 Microsoft.KeyVault/deletedVaults/read 权限。
  • 默认情况下,只有订阅管理员具有这些权限。

计划清除

列出已删除的 Key Vault 对象会显示 Key Vault 计划将其清除的时间。 “Scheduled Purge Date”字段指示如果不采取任何操作,会永久删除 Key Vault 对象的时间。 默认情况下,已删除的 Key Vault 对象的保留期为 90 天。

Note

已清除的保管库对象(由“Scheduled Purge Date”字段触发清除操作)将被永久删除。 它不可恢复。

其他资源