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

使用Terraform创建Azure Key Vault密钥时持续遭遇403权限错误

问题根源与解决方案

你的问题核心是Key Vault启用了Azure RBAC访问控制模式,但代码中仍在使用传统的Access Policy配置——这两种权限模式互斥,Access Policy在RBAC模式下完全不生效,导致你的Service Principal没有实际的密钥操作权限,触发403错误。

具体修正步骤

  1. 移除所有Access Policy相关配置:

    • 删除azurerm_key_vault中的access_policy块
    • 删除独立的azurerm_key_vault_access_policy资源
  2. 添加RBAC角色分配:
    给指定的Service Principal分配Key Vault Secrets Officer角色(该角色包含你需要的Get/Set/List/Delete权限),使用azurerm_role_assignment资源实现。

修正后的完整代码

# 变量部分(保留你原有变量定义,此处省略)

output "connection_string" {
  value = azurerm_key_vault_secret.key_vault_secret.value
}

resource "azurerm_resource_group" "keyvault_rg" {
  name     = lower("${var.application_name}-keyvault-${var.location_short}-${var.environment}-rg")
  location = var.location
}

resource "azurerm_key_vault" "key_vault" {
  depends_on = [azurerm_resource_group.keyvault_rg]
  name                = lower("${var.application_name}-keyvault-${var.location_short}-${var.environment}")
  resource_group_name = azurerm_resource_group.keyvault_rg.name
  location            = azurerm_resource_group.keyvault_rg.location
  tenant_id           = var.tenant_Id
  soft_delete_retention_days = 7
  sku_name            = "standard"
  
  # 显式声明启用RBAC模式(与现有配置保持一致,可省略但更清晰)
  enabled_for_rbac = true
}

# 给目标SP分配密钥操作权限的RBAC角色
resource "azurerm_role_assignment" "kv_secrets_officer" {
  depends_on = [azurerm_key_vault.key_vault]
  scope                = azurerm_key_vault.key_vault.id
  role_definition_name = "Key Vault Secrets Officer"
  principal_id         = var.object_Id
}

resource "azurerm_key_vault_secret" "key_vault_secret" {
  depends_on = [azurerm_key_vault.key_vault, azurerm_role_assignment.kv_secrets_officer]
  name         = lower("${var.application_name}-${var.environment}-connection-string")
  value        = "connection_string"
  key_vault_id = azurerm_key_vault.key_vault.id
}

额外说明

  • Key Vault Secrets Officer是Azure内置角色,完全覆盖你需要的密钥操作权限,无需自定义角色。
  • 确保执行Terraform的账号拥有管理角色分配的权限(比如Owner或User Access Administrator),否则角色分配会失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 22:47:46