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

Terraform未更新SQL Server新TDE密钥问题排查

问题分析与解决

核心问题:重复创建TDE资源而非更新

每个Azure SQL Server仅允许存在一个azurerm_mssql_server_transparent_data_encryption资源,你的代码尝试创建新的tde-key-new资源,但实际应更新已有的TDE配置而非新建。Azure不支持同一SQL Server绑定多个TDE资源,因此新配置无法生效,旧密钥会持续显示。

具体解决步骤

1. 修正Terraform代码

  • 若此前已有Terraform管理的TDE资源,直接修改该资源的key_vault_key_id指向新密钥:
data "azurerm_key_vault" "root_keyvault" {
  name                = var.keyvault_name
  resource_group_name = var.resource_group
}

data "azurerm_key_vault_key" "tde_key" {
  key_vault_id = data.azurerm_key_vault.root_keyvault.id
  name         = var.tde_key_name
}

# 修改已有TDE资源的密钥,而非新建
resource "azurerm_mssql_server_transparent_data_encryption" "tde-key" {
  server_id        = var.server_id
  key_vault_key_id = data.azurerm_key_vault_key.tde_key.id
}
  • 若此前TDE是手动在Azure门户配置的,先将现有TDE资源导入Terraform状态:
terraform import azurerm_mssql_server_transparent_data_encryption.tde-key <你的SQL Server资源ID>

导入完成后使用上述代码配置新密钥,执行terraform apply完成更新。

2. 验证Key Vault权限

确保SQL Server的托管身份(系统托管或用户托管)对新密钥拥有以下权限:

  • Get
  • Wrap Key
  • Unwrap Key
    权限需直接授予SQL Server的身份,避免通过组或其他间接方式授权。

3. 确认Terraform执行结果

执行terraform plan,确认输出显示为更新现有TDE资源而非创建新资源。执行terraform apply后,检查Terraform输出是否提示TDE资源已成功更新。

4. 排除门户缓存问题

若Terraform确认更新成功但门户仍显示旧密钥,等待5-10分钟后刷新页面,Azure门户存在数据同步延迟的可能。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 16:39:21