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

如何通过命令或Terraform判断Azure Key Vault的权限策略类型

判断Azure Key Vault权限模型并实现Terraform条件权限分配

一、用Azure CLI判断Key Vault权限模型

执行以下命令直接获取权限模型状态:

az keyvault show --name <你的Key Vault名称> --query properties.enableRbacAuthorization --output tsv
  • 返回true:Key Vault启用RBAC权限模型
  • 返回false:Key Vault使用传统访问策略模型

二、Terraform中检测权限模型

通过data资源读取Key Vault的配置,提取权限模型标识:

data "azurerm_key_vault" "target_kv" {
  name                = "your-kv-name"
  resource_group_name = "your-rg-name"
}

# 本地值存储权限模型判断结果
locals {
  use_rbac = data.azurerm_key_vault.target_kv.enable_rbac_authorization
}

三、Terraform模块中的条件权限分配逻辑

基于local.use_rbac的布尔值,分别触发RBAC角色分配或访问策略配置:

1. RBAC模式下分配角色

# 仅当启用RBAC时创建角色分配
resource "azurerm_role_assignment" "kv_rbac" {
  count                = local.use_rbac ? 1 : 0
  scope                = data.azurerm_key_vault.target_kv.id
  role_definition_name = "Key Vault Secrets User" # 可根据需求替换角色
  principal_id         = var.principal_id # 传入需授权的主体ID
}

2. 访问策略模式下配置权限

# 仅当未启用RBAC时创建访问策略
resource "azurerm_key_vault_access_policy" "kv_policy" {
  count               = local.use_rbac ? 0 : 1
  key_vault_id        = data.azurerm_key_vault.target_kv.id
  tenant_id           = data.azurerm_key_vault.target_kv.tenant_id
  object_id           = var.principal_id

  # 按需配置密钥/机密/证书权限
  secret_permissions = ["Get", "List"]
  key_permissions    = ["Get"]
}

模块变量说明

需在模块中定义传入的主体ID变量:

variable "principal_id" {
  type        = string
  description = "要分配Key Vault权限的主体(用户/应用/组)ID"
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 04:14:56