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

Posted

技术标签:

【中文标题】如何永久清除在启用软删除的情况下创建的整个 azure keyvault?【英文标题】:How can I permanently purge an entire azure keyvault that's been created with soft delete enabled? 【发布时间】:2020-12-26 14:29:09 【问题描述】:

当您创建启用了软删除的 azure keyvault 时,即使您将其删除并从头开始重新创建,该 keyvault 仍然存在。

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

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

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

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

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

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

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

【问题讨论】:

【参考方案1】:

首先要注意的是soft delete will be enabled by default by any time now。因此,软删除的禁用现在已被有效弃用。但我还是想彻底删除我的密钥库。


在 azure cli 中进行了一些挖掘之后,我偶然发现了this command:

az keyvault purge --name
                  [--location]
                  [--no-wait]
                  [--subscription]

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

az keyvault purge --name keyvaultname

这将永久且不可撤销地删除密钥库及其所有密钥和设置。 Azure UI 中似乎没有办法在不使用 CLI 或其他工具的情况下执行此操作。现在 UI 似乎也支持这一点,see here: p>

    登录 Azure 门户。 点击页面顶部的搜索栏。 在“最近的服务”下单击“Key Vault”。不要点击一个 个人密钥保管库。 在屏幕顶部单击“管理已删除的保管库”选项 将在屏幕右侧打开一个上下文窗格。 选择您的订阅。 如果您的密钥保管库已被软删除,它将出现在 右侧的上下文窗格。 如果保管库过多,您可以在以下位置单击“加载更多” 上下文窗格的底部或使用 CLI 或 PowerShell 获取 结果。 找到要恢复或清除的保管库后,选择 旁边的复选框。 如果您选择上下文窗格底部的恢复选项 想要恢复密钥保管库。 如果您想永久删除 密钥保管库。

【讨论】:

仍然无法绕过清除保护。你得到一个“(MethodNotAllowed)操作'DeletedVaultPurge'是不允许的。”当你尝试时。 听起来您对资源组@ShawnCicoria 没有清除权限 az keyvault purge --name mykv == No deleted Vault or HSM was found with name mykv。即使它仍然存在。 Azure 令人难以置信的令人沮丧。 确保在从 CLI 运行时订阅正确 ^。您现在也可以从 Azure 门户尝试:docs.microsoft.com/en-us/azure/key-vault/general/…【参考方案2】:

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

Remove-AzKeyVault -VaultName kvname -InRemovedState -Force -Location "Location"

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

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

【讨论】:

我不相信这会清除 keyvault,所以你仍然会得到问题中的错误

以上是关于如何永久清除在启用软删除的情况下创建的整个 azure keyvault?的主要内容,如果未能解决你的问题,请参考以下文章

如何在laravel背包中启用软删除

如何在 IntelliJ 中永久启用行号?

如何清除和重置 Core Data 数据模型

在 Azure 存储中查找软删除 blob 的永久删除日期

如何在不保留任何到期时间的情况下清除 javascript 中的 cookie [重复]

如何立即禁用对软删除或不再启用的用户的访问?