本文介绍了 Azure Key Vault 的两项恢复功能:软删除和清除保护。 本文档概述了这两项功能,并演示了如何通过 Azure 门户、Azure CLI 和 Azure PowerShell 对其进行管理。
重要
如果密钥保管库未启用软删除保护,则删除密钥会将它永久删除。 强烈建议客户通过 Azure Policy 为其保管库启用软删除强制实施功能。
有关 Key Vault 的详细信息,请参阅
Azure 订阅 - 创建试用版订阅
Key Vault - 可以使用 Azure 门户、Azure CLI 或 Azure PowerShell 进行创建
用户需要具有以下权限(在订阅级别)才能对软删除的保管库执行操作:
权限 说明 Microsoft.KeyVault/locations/deletedVaults/read 查看软删除的密钥保管库的属性 Microsoft.KeyVault/locations/deletedVaults/purge/action 清除软删除的密钥保管库 Microsoft.KeyVault/locations/operationResults/read 检查保管库的清除状态 密钥保管库参与者 恢复软删除的保管库
软删除和清除保护是两项不同的密钥保管库恢复功能。
“软删除”旨在防止意外删除密钥保管库以及存储在密钥保管库中的密钥、机密以及证书。 可以将软删除视为回收站。 密钥保管库或密钥保管库对象在删除后,会在可供用户配置的保持期内或默认的 90 天内保持可恢复状态。 处于软删除状态的密钥保管库也可以被清除(永久删除),这样你就可以重新创建同名的密钥保管库和密钥保管库对象。 恢复和删除密钥保管库与对象都需要提升的访问策略权限。 软删除一旦启用就无法禁用。
必须注意的是,密钥保管库名称是全局独一无二的,因此你无法创建与处于软删除状态的密钥保管库同名的密钥保管库。 类似地,密钥、机密和证书的名称在密钥保管库中是独一无二的。 你无法使用处于软删除状态的机密、密钥或证书的名称创建另一个机密、密钥或证书。
“清除保护”旨在防止恶意内部成员删除你的密钥保管库、密钥、机密和证书。 可以将它视为一个带有基于时间的锁的回收站。 你可以在可配置的保持期内随时恢复项。 在保持期结束之前,你将无法永久删除或清除密钥保管库。 保持期结束后,系统会自动清除密钥保管库或密钥保管库对象。
备注
“清除保护”旨在使管理员角色或权限不能重写、禁用或绕过清除保护。 启用清除保护后,任何人(包括 Microsoft)都不能禁用或重写它。 这意味着,在重复使用密钥保管库名称之前,必须恢复已删除的密钥保管库或等待保持期结束。
有关软删除的详细信息,请参阅 Azure Key Vault 软删除概述。
验证密钥保管库是否已启用软删除
az keyvault show --subscription {SUBSCRIPTION ID} -g {RESOURCE GROUP} -n {VAULT NAME}
在密钥保管库上启用软删除
默认情况下,所有新的密钥保管库均已启用软删除。 如果当前有未启用软删除的密钥保管库,请使用以下命令启用软删除。
az keyvault update --subscription {SUBSCRIPTION ID} -g {RESOURCE GROUP} -n {VAULT NAME} --enable-soft-delete true
删除密钥保管库(在启用了软删除的情况下可以恢复)
az keyvault delete --subscription {SUBSCRIPTION ID} -g {RESOURCE GROUP} -n {VAULT NAME}
列出所有已软删除的密钥保管库
az keyvault list-deleted --subscription {SUBSCRIPTION ID} --resource-type vault
恢复已软删除的密钥保管库
az keyvault recover --subscription {SUBSCRIPTION ID} -n {VAULT NAME}
清除已软删除的密钥保管库(警告!此操作会永久删除你的密钥保管库)
az keyvault purge --subscription {SUBSCRIPTION ID} -n {VAULT NAME}
对密钥保管库启用清除保护
az keyvault update --subscription {SUBSCRIPTION ID} -g {RESOURCE GROUP} -n {VAULT NAME} --enable-purge-protection true
授予清除和恢复证书所需的访问权限
az keyvault set-policy --upn user@contoso.com --subscription {SUBSCRIPTION ID} -g {RESOURCE GROUP} -n {VAULT NAME} --certificate-permissions recover purge
删除证书
az keyvault certificate delete --subscription {SUBSCRIPTION ID} --vault-name {VAULT NAME} --name {CERTIFICATE NAME}
列出已删除的证书
az keyvault certificate list-deleted --subscription {SUBSCRIPTION ID} --vault-name {VAULT NAME}
恢复已删除的证书
az keyvault certificate recover --subscription {SUBSCRIPTION ID} --vault-name {VAULT NAME} --name {CERTIFICATE NAME}
清除已软删除的证书(警告!此操作会永久删除你的证书)
az keyvault certificate purge --subscription {SUBSCRIPTION ID} --vault-name {VAULT NAME} --name {CERTIFICATE NAME}
授予清除和恢复密钥所需的访问权限
az keyvault set-policy --upn user@contoso.com --subscription {SUBSCRIPTION ID} -g {RESOURCE GROUP} -n {VAULT NAME} --key-permissions recover purge
删除密钥
az keyvault key delete --subscription {SUBSCRIPTION ID} --vault-name {VAULT NAME} --name {KEY NAME}
列出已删除的密钥
az keyvault key list-deleted --subscription {SUBSCRIPTION ID} --vault-name {VAULT NAME}
恢复已删除的密钥
az keyvault key recover --subscription {SUBSCRIPTION ID} --vault-name {VAULT NAME} --name {KEY NAME}
清除已软删除的密钥(警告!此操作会永久删除你的密钥)
az keyvault key purge --subscription {SUBSCRIPTION ID} --vault-name {VAULT NAME} --name {KEY NAME}
授予清除和恢复机密所需的访问权限
az keyvault set-policy --upn user@contoso.com --subscription {SUBSCRIPTION ID} -g {RESOURCE GROUP} -n {VAULT NAME} --secret-permissions recover purge
删除机密
az keyvault secret delete --subscription {SUBSCRIPTION ID} --vault-name {VAULT NAME} --name {SECRET NAME}
列出已删除的机密
az keyvault secret list-deleted --subscription {SUBSCRIPTION ID} --vault-name {VAULT NAME}
恢复已删除的机密
az keyvault secret recover --subscription {SUBSCRIPTION ID} --vault-name {VAULT NAME} --name {SECRET NAME}
清除已软删除的机密(警告!此操作会永久删除你的机密)
az keyvault secret purge --subscription {SUBSCRIPTION ID} --vault-name {VAULT NAME} --name {SECRET NAME}