带软删除和清除保护功能的 Azure Key Vault 恢复管理

本文介绍了 Azure Key Vault 的两项恢复功能:软删除和清除保护。 本文档概述了这两项功能,并演示了如何通过 Azure 门户、Azure CLI 和 Azure PowerShell 对其进行管理。

重要

如果密钥保管库未启用软删除保护,则删除密钥会将它永久删除。 强烈建议客户通过 Azure Policy 为其保管库启用软删除强制实施功能。

有关 Key Vault 的详细信息,请参阅

先决条件

  • Azure 订阅 - 创建试用版订阅

  • Azure PowerShell

  • Azure CLI

  • Key Vault - 可以使用 Azure 门户Azure CLIAzure PowerShell 进行创建

  • 用户需要具有以下权限(在订阅级别)才能对软删除的保管库执行操作:

    权限 说明
    Microsoft.KeyVault/locations/deletedVaults/read 查看软删除的密钥保管库的属性
    Microsoft.KeyVault/locations/deletedVaults/purge/action 清除软删除的密钥保管库
    Microsoft.KeyVault/locations/operationResults/read 检查保管库的清除状态
    密钥保管库参与者 恢复软删除的保管库

什么是软删除和清除保护

软删除和清除保护是两项不同的密钥保管库恢复功能。

“软删除”旨在防止意外删除密钥保管库以及存储在密钥保管库中的密钥、机密以及证书。 可以将软删除视为回收站。 密钥保管库或密钥保管库对象在删除后,会在可供用户配置的保持期内或默认的 90 天内保持可恢复状态。 处于软删除状态的密钥保管库也可以被清除(永久删除),这样你就可以重新创建同名的密钥保管库和密钥保管库对象。 恢复和删除密钥保管库与对象都需要提升的访问策略权限。 软删除一旦启用就无法禁用。

必须注意的是,密钥保管库名称是全局独一无二的,因此你无法创建与处于软删除状态的密钥保管库同名的密钥保管库。 类似地,密钥、机密和证书的名称在密钥保管库中是独一无二的。 你无法使用处于软删除状态的机密、密钥或证书的名称创建另一个机密、密钥或证书。

“清除保护”旨在防止恶意内部成员删除你的密钥保管库、密钥、机密和证书。 可以将它视为一个带有基于时间的锁的回收站。 你可以在可配置的保持期内随时恢复项。 在保持期结束之前,你将无法永久删除或清除密钥保管库。 保持期结束后,系统会自动清除密钥保管库或密钥保管库对象。

备注

“清除保护”旨在使管理员角色或权限不能重写、禁用或绕过清除保护。 启用清除保护后,任何人(包括 Microsoft)都不能禁用或重写它。 这意味着,在重复使用密钥保管库名称之前,必须恢复已删除的密钥保管库或等待保持期结束。

有关软删除的详细信息,请参阅 Azure Key Vault 软删除概述

Key Vault (PowerShell)

  • 验证密钥保管库是否已启用软删除

    Get-AzKeyVault -VaultName "ContosoVault"
    
  • 删除密钥保管库

    Remove-AzKeyVault -VaultName 'ContosoVault'
    
  • 列出所有已软删除的密钥保管库

    Get-AzKeyVault -InRemovedState
    
  • 恢复已软删除的密钥保管库

    Undo-AzKeyVaultRemoval -VaultName ContosoVault -ResourceGroupName ContosoRG -Location chinanorth
    
  • 清除已软删除的密钥保管库(警告!此操作会永久删除你的密钥保管库)

    Remove-AzKeyVault -VaultName ContosoVault -InRemovedState -Location chinanorth
    
  • 对密钥保管库启用清除保护

    Update-AzKeyVault -VaultName ContosoVault -ResourceGroupName ContosoRG -EnablePurgeProtection
    

证书 (PowerShell)

  • 授予恢复和清除证书所需的权限

    Set-AzKeyVaultAccessPolicy -VaultName ContosoVault -UserPrincipalName user@contoso.com -PermissionsToCertificates recover,purge
    
  • 删除证书

    Remove-AzKeyVaultCertificate -VaultName ContosoVault -Name 'MyCert'
    
  • 列出密钥保管库中所有已删除的证书

    Get-AzKeyVaultCertificate -VaultName ContosoVault -InRemovedState
    
  • 恢复处于已删除状态的证书

    Undo-AzKeyVaultCertificateRemoval -VaultName ContosoVault -Name 'MyCert'
    
  • 清除已软删除的证书(警告!此操作会永久删除你的证书)

    Remove-AzKeyVaultcertificate -VaultName ContosoVault -Name 'MyCert' -InRemovedState
    

密钥 (PowerShell)

  • 授予恢复和清除密钥所需的权限

    Set-AzKeyVaultAccessPolicy -VaultName ContosoVault -UserPrincipalName user@contoso.com -PermissionsToKeys recover,purge
    
  • 删除密钥

    Remove-AzKeyVaultKey -VaultName ContosoVault -Name 'MyKey'
    
  • 列出密钥保管库中所有已删除的密钥

    Get-AzKeyVaultKey -VaultName ContosoVault -InRemovedState
    
  • 恢复已软删除的密钥

    Undo-AzKeyVaultKeyRemoval -VaultName ContosoVault -Name ContosoFirstKey
    
  • 清除已软删除的密钥(警告!此操作会永久删除你的密钥)

    Remove-AzKeyVaultKey -VaultName ContosoVault -Name ContosoFirstKey -InRemovedState
    

机密 (PowerShell)

  • 授予恢复和清除机密所需的权限

    Set-AzKeyVaultAccessPolicy -VaultName ContosoVault -UserPrincipalName user@contoso.com -PermissionsToSecrets recover,purge
    
  • 删除名为 SQLPassword 的机密

    Remove-AzKeyVaultSecret -VaultName ContosoVault -Name SQLPassword
    
  • 列出密钥保管库中所有已删除的机密

    Get-AzKeyVaultSecret -VaultName ContosoVault -InRemovedState
    
  • 恢复处于已删除状态的机密

    Undo-AzKeyVaultSecretRemoval -VaultName ContosoVault -Name SQLPassword
    
  • 清除处于已删除状态的机密(警告!此操作会永久删除你的密钥)

    Remove-AzKeyVaultSecret -VaultName ContosoVault -Name SQLPassword -InRemovedState 
    

后续步骤