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

如何在Terraform中获取azurerm_managed_disk的disk_encryption_key的SecretURL

如何在Terraform中获取Azure托管磁盘加密所需的Secret URL?

你当前的配置存在核心误区:磁盘加密密钥(disk_encryption_key)需要的是Azure密钥保管库中Secret的URL,但你现在用的是azurerm_key_vault_key数据源(用于获取非对称密钥),两者属于不同资源类型,不能混用。

根据文档说明:

secret_url - (必填) 用作磁盘加密密钥的密钥保管库Secret的URL,可在azurerm_key_vault_secret资源的id字段找到。

解决方案步骤

  1. 添加azurerm_key_vault_secret数据源,用于获取目标Secret的URL信息
  2. 在azurerm_managed_disk的disk_encryption_key块中,引用该数据源的id作为secret_url

修改后的完整配置

data "azurerm_key_vault" "kv" {
  name                = var.disk_encryption_key_vault_name
  resource_group_name = var.disk_encryption_key_rg
}

# 新增:获取磁盘加密用的Secret资源
data "azurerm_key_vault_secret" "disk_encryption_secret" {
  name         = var.disk_encryption_secret_name # 需替换为你的Secret名称变量
  key_vault_id = data.azurerm_key_vault.kv.id
}

data "azurerm_key_vault_key" "encryption-kv" {
  name         = var.disk_encryption_key_name
  key_vault_id = data.azurerm_key_vault.kv.id
}

resource "azurerm_managed_disk" "data" {
  count                = var.data_disk_count
  name                 = "${var.vm_name}-DataDisk-${count.index + 1}"
  location             = var.location
  resource_group_name  = var.resource_group_name
  storage_account_type = var.data_disk_storage_account_type
  create_option        = "Empty"
  disk_size_gb         = var.data_disk_size_gb
  tags                 = var.tags

  encryption_settings {
    enabled = true
    disk_encryption_key {
      secret_url      = data.azurerm_key_vault_secret.disk_encryption_secret.id # 引用Secret的URL
      source_vault_id = data.azurerm_key_vault.kv.id # 直接引用密钥保管库ID更简洁
    }
    key_encryption_key {
      key_url         = "https://${data.azurerm_key_vault.kv.name}.vault.usgovcloudapi.net/keys/${var.disk_encryption_key_name}/${data.azurerm_key_vault_key.encryption-kv.version}"
      source_vault_id = data.azurerm_key_vault_key.encryption-kv.key_vault_id
    }
  }
}

关键注意事项

  • 确保密钥保管库中已创建对应Secret(磁盘加密使用对称密钥,存储为Secret类型),并正确设置var.disk_encryption_secret_name变量指向该Secret名称
  • source_vault_id直接引用密钥保管库ID即可,无需通过Key资源间接获取,避免冗余

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 18:57:09