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

如何在Terraform中仅更新阶段设置Azure Key Vault的公网访问禁用属性?

解决方案

你可以通过分阶段部署的方式实现:先开启公网访问创建Key Vault和密钥,再禁用公网访问。具体有两种可行方式:

方式一:手动分两次执行Terraform

  1. 初始配置中,将Key Vault的public_network_access_enabled设为true,正常定义azurerm_key_vault和azurerm_key_vault_key资源:
resource "azurerm_key_vault" "example" {
  name                       = "example-keyvault"
  location                   = azurerm_resource_group.example.location
  resource_group_name        = azurerm_resource_group.example.name
  tenant_id                  = data.azurerm_client_config.current.tenant_id
  soft_delete_retention_days = 7
  purge_protection_enabled   = true

  public_network_access_enabled = true

  sku_name = "standard"

  access_policy {
    tenant_id = data.azurerm_client_config.current.tenant_id
    object_id = data.azurerm_client_config.current.object_id

    key_permissions = [
      "Create", "Get", "List",
    ]
  }
}

resource "azurerm_key_vault_key" "example" {
  name         = "example-key"
  key_vault_id = azurerm_key_vault.example.id
  key_type     = "RSA"
  key_size     = 2048

  key_opts = [
    "decrypt", "encrypt", "sign", "unwrapKey", "verify", "wrapKey",
  ]
}
  1. 第一次执行terraform apply,完成Key Vault和密钥的创建。
  2. 修改azurerm_key_vault资源的public_network_access_enabled为false,再次执行terraform apply。此时密钥已存在,Terraform仅更新Key Vault的网络配置,不会触发密钥创建阶段的403错误。

⚠️ 注意:第二次执行terraform apply时,你的Terraform运行环境需要能访问Key Vault(比如通过私有端点接入Key Vault所在VNet,或者在Key Vault的防火墙允许列表内),否则会因网络访问被拒导致更新失败。

方式二:用变量自动化控制部署阶段

可以定义一个布尔变量来控制公网访问的状态,避免手动修改配置文件:

  1. 定义变量:
variable "enable_public_access" {
  type        = bool
  description = "控制Key Vault是否开启公网访问"
  default     = true
}
  1. 在Key Vault资源中引用该变量:
resource "azurerm_key_vault" "example" {
  // 其他配置保持不变
  public_network_access_enabled = var.enable_public_access
  // 其他配置保持不变
}
  1. 第一次部署时,直接执行terraform apply(默认开启公网访问),完成密钥创建。
  2. 第二次部署时,指定变量值关闭公网访问:
terraform apply -var enable_public_access=false

如果你的场景需要完全自动化,也可以结合CI/CD流水线分阶段执行上述步骤,但手动分两次apply或用变量控制已经能解决大部分场景的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 08:03:19