You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform配置Key Vault清除保护后恢复删除密钥失败求助

解决Azure Key Vault恢复删除中密钥的409冲突问题

当使用如下Terraform配置部署Key Vault模块时:

module "key_vault" {
  for_each = var.STAGES

  resourceName           = "kv-${each.value}-${local.resource_name_suffix}"
  ...

  purgeProtectionEnabled = true
}

删除密钥后执行恢复操作时,会触发如下409冲突错误:

Error: keyvault.BaseClient#RecoverDeletedSecret: Failure responding to request: StatusCode=409 -- Original Error: autorest/azure: Service returned an error. Status=409 Code="Conflict" Message="Secret AzureAiApiKey is currently being deleted." InnerError={"code":"ObjectIsBeingDeleted"}

以下是几种可行的解决方法:

  • 手动等待删除完成后恢复
    启用purgeProtectionEnabled后,密钥删除后会进入软删除保留期,且初期会处于"正在删除"状态。可通过Azure工具确认状态:

    • 用Azure CLI查询已删除密钥状态:
      az keyvault secret show-deleted --name "AzureAiApiKey" --vault-name "your-keyvault-name"
      
      当输出中recoveryId字段正常返回,且无"正在删除"提示时,再执行恢复操作。
  • Terraform中添加延迟等待逻辑
    通过time_sleep资源设置延迟,确保删除操作完成后再触发恢复:

    resource "time_sleep" "wait_for_secret_deletion" {
      create_duration = "5m" # 根据实际情况调整等待时长,如5分钟
    
      # 依赖触发密钥删除的资源,保证删除先执行
      depends_on = [azurerm_key_vault_secret.your_secret_resource]
    }
    
    # 恢复密钥的资源依赖等待资源
    resource "azurerm_key_vault_secret" "recovered_secret" {
      name         = "AzureAiApiKey"
      value        = "your-secret-value"
      key_vault_id = module.key_vault.id
    
      depends_on = [time_sleep.wait_for_secret_deletion]
    }
    

    若延迟后仍报错,可适当延长等待时长。

  • 用脚本自动化等待与恢复
    编写Shell脚本循环检查密钥状态,直到允许恢复再执行操作:

    VAULT_NAME="your-keyvault-name"
    SECRET_NAME="AzureAiApiKey"
    
    while true; do
      STATUS=$(az keyvault secret show-deleted --name $SECRET_NAME --vault-name $VAULT_NAME --query "attributes.recoveryId" -o tsv 2>/dev/null)
      if [ ! -z "$STATUS" ]; then
        echo "Secret ready for recovery, proceeding..."
        az keyvault secret recover --name $SECRET_NAME --vault-name $VAULT_NAME
        break
      else
        echo "Secret still being deleted, waiting 30 seconds..."
        sleep 30
      fi
    done
    

内容的提问来源于stack exchange,提问作者Janis Karklins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 05:31:20