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

如何禁用Azure KeyVault中密钥的旧版本仅保留最新版本启用

禁用Azure KeyVault密钥旧版本的实现方案

可以实现该需求,核心逻辑为遍历KeyVault下所有密钥,拉取单密钥全量版本后排除最新版本,将剩余旧版本批量修改为禁用状态即可,以下是三种工具的可落地实现方案:


PowerShell 实现

需提前安装Az.KeyVault模块,操作脚本如下:

# 替换为实际KeyVault名称
$keyVaultName = "<你的KeyVault名称>"

# 拉取当前KeyVault下所有密钥
$allKeys = Get-AzKeyVaultKey -VaultName $keyVaultName

foreach ($key in $allKeys) {
    # 拉取当前密钥所有版本,按创建时间降序排序
    $keyVersions = Get-AzKeyVaultKey -VaultName $keyVaultName -Name $key.Name -IncludeVersions | Sort-Object Created -Descending
    # 跳过最新版本,禁用其余所有旧版本
    for ($i = 1; $i -lt $keyVersions.Count; $i++) {
        Update-AzKeyVaultKey -VaultName $keyVaultName -Name $key.Name -Version $keyVersions[$i].Version -Enable $false
    }
}

提示:正式执行前可将Update-AzKeyVaultKey行替换为Write-Output $keyVersions[$i].Version,确认待禁用版本无误后再执行实际操作。


Azure CLI 实现

操作脚本如下:

# 替换为实际KeyVault名称
KEY_VAULT_NAME="<你的KeyVault名称>"

# 拉取KeyVault下所有密钥名称
keys=$(az keyvault key list --vault-name $KEY_VAULT_NAME --query "[].name" -o tsv)

for key in $keys; do
    # 拉取当前密钥所有版本,按创建时间降序排序后跳过第一个(最新)版本,提取剩余版本ID
    old_versions=$(az keyvault key list-versions --vault-name $KEY_VAULT_NAME --name $key --query "sort_by([], &created) | reverse() | [1:].kid" -o tsv)
    for version_kid in $old_versions; do
        # 从版本ID中提取版本号
        version=$(echo $version_kid | awk -F '/' '{print $NF}')
        # 禁用旧版本
        az keyvault key set-attributes --vault-name $KEY_VAULT_NAME --name $key --version $version --enabled false
    done
done

Terraform 实现

仅适用于已通过Terraform管控的密钥,未纳入Terraform状态管理的存量密钥不建议使用该方式,避免状态不一致问题。
可通过配置密钥旋转策略限定仅保留最新版本启用,批量配置示例如下:

# 声明需要管理的密钥列表
variable "key_list" {
  type    = list(string)
  default = ["key1", "key2", "key3"]
}

# 批量创建/管理密钥
resource "azurerm_key_vault_key" "batch_keys" {
  for_each     = toset(var.key_list)
  name         = each.value
  key_vault_id = azurerm_key_vault.your_kv.id
  key_type     = "RSA"
  key_size     = 2048
  key_opts     = ["decrypt", "encrypt", "sign", "unwrapKey", "verify", "wrapKey"]

  # 配置旋转策略,自动禁用旧版本
  rotation_policy {
    automatic {
      time_before_expiry = "P30D"
    }
    expire_after         = "P90D"
    retain_in_days       = 7
    notify_before_expiry = "P29D"
  }

  lifecycle {
    create_before_destroy = true
  }
}

配置应用后,Terraform会自动将对应密钥的旧版本调整为禁用状态,仅保留最新版本可用。


注意事项

  • 操作前建议对KeyVault完成全量备份,避免误操作导致业务受影响
  • 如有业务系统明确依赖旧版本密钥,需先完成业务切流至新版本后再执行禁用操作
  • 操作完成后可抽查部分密钥的版本状态,确认操作符合预期

内容的提问来源于stack exchange,提问作者Mukteswar Patnaik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:45:04