modules/ai-foundry-identity/rbac.tf (43 lines of code) (raw):

data "azurerm_role_definition" "eligible_roles" { for_each = var.eligible_roles role_definition_id = each.value } locals { user_role_assignments = flatten([ for group, members in var.group_assignments : [ for member in members : [ for role in var.role_templates[group] : { group = group type = member.type object_id = member.objectid name = member.name role_name = role.role_name role_id = "/subscriptions/${var.subscription_id}${data.azurerm_role_definition.eligible_roles[role.role_name].id}" scope = var.scopes[role.scope] } ] ] ]) } resource "azurerm_role_assignment" "dynamic_user_role_assignments" { for_each = { for role in local.user_role_assignments : "${role.group}-${role.role_name}-${role.object_id}" => role } scope = each.value.scope role_definition_id = each.value.role_id principal_id = each.value.object_id } locals { managed_identity_role_assignments_map = { for idx, role in var.managed_identity_roles : idx => { role_name = role.role_name role_id = "/subscriptions/${var.subscription_id}${data.azurerm_role_definition.eligible_roles[role.role_name].id}" object_id = role.object_id scope = var.scopes[role.scope] } } } resource "azurerm_role_assignment" "dynamic_managed_identity_role_assignments" { for_each = local.managed_identity_role_assignments_map role_definition_id = each.value.role_id scope = each.value.scope principal_id = each.value.object_id }