如何永久清除在启用软删除的情况下创建的整个 azure keyvault?

Lia*_*iam 9 azure azure-cli azure-keyvault

当您创建启用了软删除的 azure 密钥保管库时,即使您删除它并从头开始重新创建密钥保管库,该密钥保管库仍然存在。

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

当您尝试通过 UI 删除密钥库时,您也会收到此错误消息:

此密钥保管库已启用软删除功能。软删除此密钥保管库后,它将作为隐藏保管库保留在您的订阅中。它将在您指定的保留期后清除。可以使用 Azure 门户、Azure PowerShell 或 Azure CLI 更快地清除它或还原保管库。请参阅此页面以供参考:https : //docs.microsoft.com/azure/key-vault/key-vault-ovw-soft-delete

这导致我在开发中出现问题。我创建了一个启用了软删除的密钥保管库(偶然),现在我想完全删除该密钥保管库并使用不同的设置重新创建它。每次我删除它并重新创建它时,它都包含以前的所有设置、密钥等。我也无法创建具有相同名称且禁用软删除的密钥库。它抱怨具有该名称的密钥库已经存在(VaultAlreadyExists例外)并且设置不兼容。

MSDN 上keyvault 文档(Azure 中上述消息的链接)提到了如何永久清除软删除,但它稍微委婉的句子对我没有帮助:

可以通过对代理资源的 POST 操作永久删除、清除密钥保管库,并且需要特殊权限。

那么我该如何摆脱这个东西呢?

Lia*_*iam 20

首先要注意的是,正如我后来发现的那样,现在任何时候都将默认启用软删除。因此,软删除禁用现在实际上已被弃用。但我仍然想完全删除我的密钥库。


在对 azure cli 进行了一些挖掘之后,我偶然发现了这个命令

az keyvault purge --name
                  [--location]
                  [--no-wait]
                  [--subscription]
Run Code Online (Sandbox Code Playgroud)

因此,如果您使用具有足够权限来运行此程序的用户登录,您可以使用以下命令永久删除整个密钥保管库:

az keyvault purge --name keyvaultname
Run Code Online (Sandbox Code Playgroud)

这将永久且不可撤销地删除密钥库、所有密钥和设置。如果不使用 CLI 或其他一些工具,Azure UI 中似乎没有办法做到这一点。现在似乎 UI 也支持此功能,请参见此处

  1. 登录到 Azure 门户。
  2. 单击页面顶部的搜索栏。
  3. 在“最近的服务”下单击“密钥保管库”。不要单击单个密钥保管库。
  4. 在屏幕顶部单击“管理已删除的保管库”选项
  5. 上下文窗格将在屏幕右侧打开。
  6. 选择您的订阅。
  7. 如果您的密钥保管库已被软删除,它将显示在右侧的上下文窗格中。
  8. 如果保管库过多,您可以单击上下文窗格底部的“加载更多”或使用 CLI 或 PowerShell 获取结果。
  9. 找到要恢复或清除的保管库后,选中它旁边的复选框。
  10. 如果要恢复密钥保管库,请选择上下文窗格底部的恢复选项。
  11. 如果要永久删除密钥保管库,请选择清除选项。

  • `az keyvault purge --name mykv` == `未找到名为 mykv 的已删除 Vault 或 HSM`。尽管它还在那里。Azure 是如此令人难以置信的令人沮丧。 (3认同)

小智 10

您还可以使用 Az PS。根据之前的答案,这是假设您有足够的订阅权限:

Remove-AzKeyVault -VaultName kvname -InRemovedState -Force -Location "Location"
Run Code Online (Sandbox Code Playgroud)

请参阅此参考: https://learn.microsoft.com/en-us/powershell/module/az.keyvault/remove-azkeyvault ?view=azps-5.7.0

另外,我使用此参考来获取参数的正确顺序,因为我不熟悉开关参数及其去向。 https://github.com/Azure/azure-powershell/issues/14012