带软删除和清除保护功能的 Azure Key Vault 恢复管理
本文介绍了 Azure Key Vault 的两项恢复功能:软删除和清除保护。 本文档概述了这两项功能,并演示了如何通过 Azure 门户、Azure CLI 和 Azure PowerShell 对其进行管理。
重要
如果密钥保管库未启用软删除保护,则删除密钥会将它永久删除。 强烈建议客户通过 Azure Policy 为其保管库启用软删除强制实施功能。
有关 Key Vault 的详细信息,请参阅
先决条件
什么是软删除和清除保护
软删除和清除保护是两项不同的密钥保管库恢复功能。
“软删除”旨在防止意外删除密钥保管库以及存储在密钥保管库中的密钥、机密以及证书。 可以将软删除视为回收站。 密钥保管库或密钥保管库对象在删除后,会在可供用户配置的保持期内或默认的 90 天内保持可恢复状态。 处于软删除状态的密钥保管库也可以被清除(永久删除),这样你就可以重新创建同名的密钥保管库和密钥保管库对象。 恢复和删除密钥保管库与对象都需要提升的访问策略权限。 软删除一旦启用就无法禁用。
必须注意的是,密钥保管库名称是全局独一无二的,因此你无法创建与处于软删除状态的密钥保管库同名的密钥保管库。 类似地,密钥、机密和证书的名称在密钥保管库中是独一无二的。 你无法使用处于软删除状态的机密、密钥或证书的名称创建另一个机密、密钥或证书。
“清除保护”旨在防止恶意内部成员删除你的密钥保管库、密钥、机密和证书。 可以将它视为一个带有基于时间的锁的回收站。 你可以在可配置的保持期内随时恢复项。 在保持期结束之前,你将无法永久删除或清除密钥保管库。 保持期结束后,系统会自动清除密钥保管库或密钥保管库对象。
注意
“清除保护”旨在使管理员角色或权限不能重写、禁用或绕过清除保护。 启用清除保护后,任何人(包括 Microsoft)都不能禁用或重写它。 这意味着,在重复使用密钥保管库名称之前,必须恢复已删除的密钥保管库或等待保持期结束。
有关软删除的详细信息,请参阅 Azure Key Vault 软删除概述。
验证是否对密钥保管库启用了软删除,并在未启用软删除的情况下将其启用
- 登录到 Azure 门户。
- 选择密钥保管库。
- 选择“属性”边栏选项卡。
- 验证软删除旁边的单选按钮是否已设置为“启用恢复”。
- 如果未对密钥保管库启用软删除,请选择该单选按钮以启用软删除,然后选择“保存”。
向服务主体授予清除和恢复已删除机密所需的访问权限
- 登录到 Azure 门户。
- 选择密钥保管库。
- 选择“访问策略”边栏选项卡。
- 在表中,找到要授予其访问权限的安全主体所在的行(或添加新的安全主体)。
- 选择密钥、证书和机密的下拉列表。
- 滚动到下拉列表底部,然后选择“恢复”和“清除”
- 安全主体还需要“获取”和“列出”功能才能执行大多数操作。
列出、恢复或清除软删除的密钥保管库
- 登录到 Azure 门户。
- 选择页面顶部的搜索栏。
- 搜索“密钥保管库”服务。 不要选择单个密钥保管库。
- 在屏幕顶部,选择“管理已删除的保管库”选项
- 此时会在屏幕右侧打开一个上下文窗格。
- 选择订阅。
- 如果你的密钥保管库已被软删除,则它会显示在右侧的上下文窗格中。
- 如果保管库过多,可以选择上下文窗格底部的“加载更多”,也可以使用 CLI 或 PowerShell 来获取结果。
- 找到要恢复或清除的保管库后,选中其旁边的复选框。
- 如果要恢复密钥保管库,请选择上下文窗格底部的恢复选项。
- 如果要永久删除密钥保管库,请选择“清除”选项。
列出、恢复或清除已软删除的机密、密钥和证书
- 登录到 Azure 门户。
- 选择密钥保管库。
- 选择与要管理的机密类型(密钥、机密或证书)对应的边栏选项卡。
- 在屏幕顶部,选择“管理已删除项(密钥、机密或证书)”
- 此时会在屏幕右侧显示一个上下文窗格。
- 如果机密、密钥或证书未显示在此列表中,则表明它没有处于软删除状态。
- 选择要管理的机密、密钥或证书。
- 选择上下文窗格底部用于恢复或清除的选项。
Key Vault (CLI)
验证密钥保管库是否已启用软删除
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
证书 (CLI)
授予清除和恢复证书所需的访问权限
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}
密钥 (CLI)
授予清除和恢复密钥所需的访问权限
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}
机密 (CLI)
授予清除和恢复机密所需的访问权限
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}
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
后续步骤