【Azure Key Vault】资源组被误删后,如何恢复 Azure Key Vault?

简介: 删除资源组后,里面的 Key Vault 通常不会立即消失,而是进入软删除状态。只要仍在保留期内,先确认订阅、保管库名称和原始区域,再创建原资源组名称,最后使用门户、Azure CLI 或 PowerShell 恢复保管库。恢复对象本身并不等于恢复所有外围配置,访问控制、网络规则、专用终结点和依赖应用仍然需要逐项验证。

问题描述

删除资源组通常是一个控制平面操作,但它会让资源组中的应用、网络和密钥依赖同时失效。最容易引起误判的是 Key Vault:门户里看不到保管库,应用开始报机密读取失败,重新创建同名保管库又提示名称已经被占用。

这时常见的三个问题是:

  1. 资源组已经不存在,Key Vault 还能不能找回?
  2. 恢复时是否必须先创建资源组?资源组的位置是否必须和 Key Vault 一致?
  3. 恢复后,原来的密钥、机密和证书是否都会自动回来?

这几个问题不能用“重新创建一个同名保管库”解决。真正需要确认的是:保管库是否处于软删除状态、保留期是否已结束,以及恢复操作所需的目标资源组是否存在。


问题解答

一、先判断:这是软删除,还是已经永久清除?

软删除可以理解为 Key Vault 的回收站。保管库被删除后,会在配置的保留期内保持可恢复状态;当前 Azure CLI 文档显示,保留期可配置为 7 到 90 天,新建保管库默认通常为 90 天。软删除状态下,保管库名称仍然被占用,因此不能通过创建同名保管库来“覆盖恢复”。

清除保护是另一层机制。它不是恢复功能,而是防止在保留期内执行永久删除的时间锁。启用清除保护后,包括 Microsoft 在内的任何人都不能绕过它;如果已经执行清除,或者保留期结束后系统完成自动清除,本文的软删除恢复流程就不再适用,只能依赖事先准备的备份或其他灾难恢复方案。

可以先用下面的流程判断处理方向:

这里有一个容易被忽略的边界:软删除只保证保管库及其软删除对象在保持期内可恢复,不等于所有依赖资源都会回滚到删除前状态。恢复成功后仍要重新检查控制平面的配置。


二、恢复前的四项核对

第一,确认云环境和订阅。 全球 Azure 与 Azure 中国区使用不同的云环境和文档入口。如果命令行列不出预期保管库,先检查当前登录的云环境、租户和订阅,不要马上执行 purge。

第二,记录已删除保管库的名称和区域。 az keyvault recover--name--location 针对的是已删除的保管库;区域必须填写保管库原来的区域,而不是随意选择一个新区域。

第三,准备目标资源组。 恢复命令需要一个现存的目标资源组。资源组被删除时,应先用原资源组名称重新创建它,再执行恢复。资源组名称是恢复目标的一部分,但资源组的 Azure Resource Manager 元数据位置不必与 Key Vault 的部署区域相同;不要把“资源组存在”误解成“资源组和保管库必须同区域”。

第四,确认权限。 查看已删除保管库需要订阅级别的 Microsoft.KeyVault/locations/deletedVaults/read 权限;清除需要 Microsoft.KeyVault/locations/deletedVaults/purge/action 和查询操作结果的权限;恢复软删除保管库需要足够的管理平面权限,官方文档列出的内置角色是“密钥保管库管理员”(Key Vault Administrator)。实际操作中应遵循最小权限原则,不要为了排障直接给订阅所有者权限。

三、Azure 门户恢复步骤

登录 Azure 门户 → 选择页面顶部的搜索栏 → 搜索“密钥保管库”服务(不要选择单个密钥保管库)→ 在屏幕顶部选择“管理已删除的保管库”选项,此时会在屏幕右侧打开一个上下文窗格 → 选择订阅;如果你的密钥保管库已被软删除,它会显示在右侧窗格中(保管库过多时可选择窗格底部的“加载更多”,或改用 CLI/PowerShell 获取结果)→ 找到要恢复的保管库后勾选其旁边的选框 → 选择上下文窗格底部的“恢复”选项。


四、Azure CLI:重建资源组并恢复保管库

下面的命令适合资源组已被删除、但 Key Vault 仍处于软删除状态的场景。先替换变量,再执行;不要把示例值直接用于生产环境。

# 全球 Azure 使用 AzureCloud;Azure 中国区使用 AzureChinaCloud
az cloud set --name AzureCloud
az login
az account set --subscription "<订阅 ID 或名称>"
# 列出当前订阅中仍可恢复的已删除保管库
az keyvault list-deleted -o table
# 查看指定保管库的删除时间、保留截止时间和原始位置
az keyvault show-deleted \
    --name "<保管库名称>" \
    --location "<保管库原始区域>"
# 资源组已删除时,先创建同名资源组
az group create \
    --name "<原资源组名称>" \
    --location "<资源组位置>"
# 恢复保管库;location 必须使用 Key Vault 原始区域
az keyvault recover \
    --name "<保管库名称>" \
    --resource-group "<原资源组名称>" \
    --location "<保管库原始区域>"

Azure 中国区将第一行改为 az cloud set --name AzureChinaCloud,并在对应云环境中重新登录。这里有两个 location,不要混淆:az group create 的位置属于资源组元数据,az keyvault recover 的位置属于 Key Vault。真正决定恢复目标保管库的是后者。

恢复是长时间运行操作时,可以先检查资源是否出现,再做数据平面验证:

# 确认保管库已经恢复到目标资源组
az keyvault show \
    --name "<保管库名称>" \
    --resource-group "<原资源组名称>" \
    --query "{id:id,location:location,provisioningState:properties.provisioningState}" \
    -o table
# 只验证名称和版本元数据,不要在终端输出机密值
az keyvault secret list \
    --vault-name "<保管库名称>" \
    --query "[].{name:name,enabled:attributes.enabled}" \
    -o table


五、Azure PowerShell:等价恢复流程

Connect-AzAccount
Set-AzContext -SubscriptionId "<订阅 ID>"
# 查看当前订阅中的已删除保管库
Get-AzKeyVault -InRemovedState
# 资源组已删除时先重建同名资源组
New-AzResourceGroup `
    -Name "<原资源组名称>" `
    -Location "<资源组位置>"
# 使用 Key Vault 原始区域恢复保管库
Undo-AzKeyVaultRemoval `
    -VaultName "<保管库名称>" `
    -ResourceGroupName "<原资源组名称>" `
    -Location "<保管库原始区域>"

如果命令返回权限错误,先区分是管理平面权限不足,还是恢复后访问 Key Vault 数据平面的权限不足。恢复保管库与读取机密是两件不同的事,不要用“能恢复”推断“应用一定能读取”。


六、只删除了密钥、机密或证书时怎么办?

如果 Key Vault 本体仍然存在,只是其中的对象被删除,不需要恢复整个保管库。在门户中打开 Key Vault,进入“密钥”“机密”或“证书”选项卡,选择对应的“管理已删除项”,然后执行恢复。

命令行也可以分别处理对象:

az keyvault secret list-deleted --vault-name "<保管库名称>"
az keyvault secret recover --vault-name "<保管库名称>" --name "<机密名称>"
az keyvault key list-deleted --vault-name "<保管库名称>"
az keyvault key recover --vault-name "<保管库名称>" --name "<密钥名称>"
az keyvault certificate list-deleted --vault-name "<保管库名称>"
az keyvault certificate recover --vault-name "<保管库名称>" --name "<证书名称>"

对象恢复同样受软删除和保留期约束。对象不存在于已删除列表中,可能意味着它没有启用软删除、已经被清除,或者当前身份访问的是错误的保管库或订阅。


七、恢复成功后,不要只测试一个机密

我建议按“资源、权限、网络、应用”四层验证,而不是看到门户中的保管库名称就宣布恢复完成:

验证层 重点检查 常见遗漏
资源 保管库名称、订阅、资源组、区域、SKU 恢复到了错误订阅或资源组
数据 密钥、机密、证书及版本是否可见 只验证对象名称,没有验证版本和有效状态
权限 Azure RBAC 角色或访问策略、托管身份 恢复后应用身份仍然收到 403
网络 防火墙、网络 ACL、专用终结点、DNS 门户能访问,但应用网络不可达
依赖 App Service、AKS、Data Factory、磁盘加密等 应用仍缓存旧配置或旧资源 ID
运维 诊断设置、日志目标、告警 恢复了数据,却没有恢复审计链路

恢复后不要把机密值打印到终端、日志或截图中。对应用做一次最小读取测试即可;如果出现 403,优先检查身份和数据平面授权;如果出现 timeout,优先检查网络路径、专用 DNS 和防火墙规则。


八、如何降低下一次误删的影响?

我的建议是把防护分成三层,而不是只依赖软删除:

  1. 恢复层: 为 Key Vault 保持软删除,并在生产环境启用清除保护;通过 Azure Policy 统一检查相关配置。
  2. 误操作层: 为资源组和 Key Vault 设置 CanNotDelete 资源锁。锁只能阻止普通删除操作,不能替代权限治理和灾备。
  3. 灾备层: 定期备份需要长期保存的密钥、机密和证书,并记录恢复演练结果。备份不是软删除的替代品,而是应对清除、保留期到期和区域级故障的另一条路径。

如果业务必须保留原资源 ID、原名称和原应用配置,优先选择软删除恢复;如果保管库已经被清除,重新创建同名保管库只能得到一个空资源,不能恢复原有对象。


常见问题

资源组被删除后,必须重建同名资源组吗?

恢复命令需要一个现存的目标资源组。对于“原资源组被删除”的场景,最稳妥的做法是先重建原名称,再执行恢复。恢复到其他资源组是否可行取决于具体服务和接口行为,不应在紧急恢复时临时试错。

资源组和 Key Vault 必须在同一个区域吗?

不必把两者强制设为同一区域。资源组位置和 Key Vault 的部署区域是不同概念;恢复命令中的 --location 应填写 Key Vault 原始区域。

恢复后,访问策略和专用终结点一定会回来吗?

不要假设一定会回来。Key Vault 数据对象的恢复与外围控制平面资源不是同一个恢复边界,必须重新核对 RBAC、访问策略、网络规则、专用终结点、DNS、诊断设置和依赖应用。

已经执行 purge,还能恢复吗?

不能使用软删除恢复流程。清除是永久删除操作;此时只能检查是否有 Key Vault 对象备份、基础设施定义、应用密钥轮换记录或其他灾备副本。


总结

资源组误删不等于 Key Vault 立即永久丢失,但恢复窗口受软删除保留期限制。正确顺序是:确认云环境和订阅,读取已删除保管库的原始区域,重建目标资源组,执行恢复,再按资源、数据、权限、网络和应用五个层面验证。最重要的边界是:软删除解决“误删除后的恢复”,不能替代清除保护、资源锁、备份和恢复演练。



参考资料

  1. Azure 密钥保管库恢复概述
  2. Azure CLI:az keyvault
  3. Azure Key Vault 软删除概述
  4. Azure Key Vault 备份
  5. Azure Key Vault 安全功能





当在复杂的环境中面临问题,格物之道需:浊而静之徐清,安以动之徐生。 云中,恰是如此!

相关文章
|
21天前
|
人工智能 开发者 SEO
当谷歌开始计量AI搜索流量: GEO优化与SEO优化, 一场不必二选一的进化
2026年Google推出AI搜索流量独立统计,标志SEO与GEO双轨并行新阶段:SEO解决“用户搜关键词找你”,GEO解决“AI回答时引用你”。数据表明双优化ROI达1:12.6。DataAsset提出四步GEO落地法,坚守白帽底线,助品牌成为“搜得到、引得准”的可信资产。
|
21天前
|
数据采集 监控 安全
小红书搜索SEO优化:UGC信源池的排序系统架构与工程化实践
本文系统解析小红书搜索SEO工程方法论:基于UGC信源池+实时索引+四因子排序架构,详解关键词命中、内容质量、账号权重、互动信号的计算逻辑,提供从0到35天的落地路线、结构化笔记模板与多账号矩阵策略,并附白帽自查清单。(239字)
|
21天前
|
SQL 人工智能 安全
从单点工具到数字员工:企业级Agent的进化之路
2026年,企业级AI智能体正从“单点工具”迈向“数字员工”。瓴羊AgentOne以岗位为本,通过Data(能信)、Agent(能干)、FDE(能打)三角能力,提供AI销售、客服、运营、营销四大标准化员工,并支持定制化扩展。聚焦GMV、解决率等业务结果,实现Multi-Agent协同与全链路可观测,助力企业规模化落地。
|
3月前
|
人工智能 自然语言处理 API
【Azure AI Search】 stopword 是什么,为什么它会影响搜索结果?
本文解析 Azure AI Search 中搜索 &quot;in brief&quot; 返回结果过多的问题,指出根源在于 analyzer 对停用词(如 &quot;in&quot;)的处理差异:默认 `standard.lucene` 保留停用词导致泛匹配,而 `en.microsoft` 会过滤停用词,使结果更精准。关键在于根据业务语义选择合适 analyzer。
253 121
|
21天前
|
并行计算 Linux 异构计算
COMSOL 6.4 保姆级图文安装教程 新手零失败指南
COMSOL Multiphysics 6.4是全球领先的多物理场耦合仿真平台,原生支持结构、流体、电磁、传热、声学、化学等任意物理场自由组合与双向耦合,内置高性能求解器、CAD双向对接及App开发器,大幅降低复杂工程虚拟验证门槛,广泛应用于研发与教学。(239字)
261 4
|
21天前
|
SQL 人工智能 安全
AI Agent 安全防护实战:最小权限与 Human-in-the-loop 的工程防线
本文深入剖析Agent安全核心风险——OWASP 2025新列的“LLM06 过度代理”,指出其本质是攻击面从文本升级为真实动作。文章系统梳理六大风险(含提示注入放大、输出处理不当等),提出“功能过多、权限过大、自主过高”三大根因,并给出四道工程化防线:最小权限工具收敛、人工审批闸门、输出校验与成本熔断,强调安全须内生于架构设计。
208 2
|
21天前
|
弹性计算
阿里云轻量应用服务器的200M带宽,最高速度能跑到多少?会限速吗?
阿里云轻量应用服务器标称200M峰值带宽(即25MB/s),但为共享带宽上限,出入方向不可同时满载;非保底带宽,高峰期可能限速、丢包。适合轻量级应用,如需稳定带宽,建议选用ECS。阿里云轻量应用服务器官网:https://t.aliyun.com/U/dwftch
|
21天前
|
人工智能 JavaScript 程序员
我给 DeepSeek Harness 换了个模式,性能提升 40%!
DeepSeek Harness 进阶玩法,一次讲透 Agent 预设!四种内置模式怎么选、有什么区别,实测对比速度和效果,还手把手教你自定义预设,把 Cursor 的 Debug 模式搬到 Harness 上来用,给 AI 一套固定的工作 SOP。
662 0
|
2月前
|
存储 弹性计算 人工智能
阿里云服务器多少钱一年?2026最新ECS、轻量和GPU服务器收费价格表(手动整理)
2026年阿里云服务器优惠价出炉:轻量应用服务器低至38元/年(2核2G+200M峰值带宽),ECS经济型99元/年(2核2G+3M带宽),企业专享u1实例199元/年(2核4G+5M+80G盘)。香港轻量25元/月起,GPU及高配ECS同步促销,全地域可用,续费同价。阿里云官方活动:https://t.aliyun.com/U/OTnSAH
968 2