extensions_containers.tf (75 lines of code) (raw):

locals { container_policies = { mdc-containers-kubernetes1-autoprovisioning-containers = { definition_display_name = "Configure Azure Arc enabled Kubernetes clusters to install the Azure Policy extension" } mdc-cmdc-containers-kubernetes2-autoprovisioning-containers = { definition_display_name = "Deploy Azure Policy Add-on to Azure Kubernetes Service clusters" } mdc-containers_aks_autoprovisioning-containers = { definition_display_name = "Configure Azure Kubernetes Service clusters to enable Defender profile" } mdc-containers-arc-autoprovisioning-containers = { definition_display_name = "[Preview]: Configure Azure Arc enabled Kubernetes clusters to install Microsoft Defender for Cloud extension" } } container_roles = { containers-kubernetes1-role-1 = { name = "Kubernetes Extension Contributor" policy = "mdc-containers-kubernetes1-autoprovisioning-containers" } containers-kubernetes2-role-1 = { name = "Azure Kubernetes Service Contributor Role" policy = "mdc-cmdc-containers-kubernetes2-autoprovisioning-containers" } containers-kubernetes2-role-2 = { name = "Azure Kubernetes Service Policy Add-on Deployment" policy = "mdc-cmdc-containers-kubernetes2-autoprovisioning-containers" } containers-aks-role-1 = { name = "Log Analytics Contributor" policy = "mdc-containers_aks_autoprovisioning-containers" } containers-aks-role-2 = { name = "Contributor" policy = "mdc-containers_aks_autoprovisioning-containers" } containers-arc-role-1 = { name = "Log Analytics Contributor" policy = "mdc-containers-arc-autoprovisioning-containers" } containers-arc-role-2 = { name = "Contributor" policy = "mdc-containers-arc-autoprovisioning-containers" } } } # Enabling Containers Extensions - Azure Policy for Kubernetes + Defender DaemonSet data "azurerm_policy_definition" "container_policies" { for_each = contains(var.mdc_plans_list, "Containers") ? local.container_policies : {} display_name = each.value.definition_display_name } resource "azurerm_subscription_policy_assignment" "container" { for_each = contains(var.mdc_plans_list, "Containers") ? local.container_policies : {} name = each.key policy_definition_id = data.azurerm_policy_definition.container_policies[each.key].id subscription_id = data.azurerm_subscription.current.id display_name = each.value.definition_display_name location = var.location identity { type = "SystemAssigned" } depends_on = [ azurerm_security_center_subscription_pricing.asc_plans["Containers"] ] } # Enabling Containers Roles data "azurerm_role_definition" "container_roles" { for_each = contains(var.mdc_plans_list, "Containers") ? local.container_roles : {} name = each.value.name scope = data.azurerm_subscription.current.id } resource "azurerm_role_assignment" "va_auto_provisioning_containers_role" { for_each = contains(var.mdc_plans_list, "Containers") ? local.container_roles : {} principal_id = azurerm_subscription_policy_assignment.container[each.value.policy].identity[0].principal_id scope = data.azurerm_subscription.current.id role_definition_id = data.azurerm_role_definition.container_roles[each.key].id }