如何通过命令或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
相关产品推荐
相关产品推荐

