main.cdn_frontdoor_wafandsecuritypolicy.tf (101 lines of code) (raw):

resource "azurerm_cdn_frontdoor_firewall_policy" "wafs" { for_each = var.front_door_firewall_policies != null ? var.front_door_firewall_policies : {} mode = each.value.mode name = each.value.name resource_group_name = each.value.resource_group_name sku_name = each.value.sku_name custom_block_response_body = each.value.custom_block_response_body custom_block_response_status_code = each.value.custom_block_response_status_code enabled = each.value.enabled redirect_url = each.value.redirect_url tags = each.value.tags != null ? each.value.tags : var.tags dynamic "custom_rule" { for_each = try(each.value.custom_rules, null) content { action = custom_rule.value.action name = custom_rule.value.name type = custom_rule.value.type enabled = custom_rule.value.enabled priority = custom_rule.value.priority rate_limit_duration_in_minutes = custom_rule.value.rate_limit_duration_in_minutes rate_limit_threshold = custom_rule.value.rate_limit_threshold dynamic "match_condition" { for_each = try(custom_rule.value.match_conditions, null) content { match_values = match_condition.value.match_values match_variable = match_condition.value.match_variable operator = match_condition.value.operator negation_condition = match_condition.value.negation_condition selector = try(match_condition.value.selector, null) transforms = try(match_condition.value.transforms, null) } } } } dynamic "managed_rule" { for_each = try(each.value.managed_rules, null) content { action = managed_rule.value.action type = managed_rule.value.type version = managed_rule.value.version dynamic "exclusion" { for_each = try(managed_rule.value.exclusions, null) content { match_variable = exclusion.value.match_variable operator = exclusion.value.operator selector = try(exclusion.value.selector, null) } } dynamic "override" { for_each = try(managed_rule.value.overrides, null) content { rule_group_name = override.value.rule_group_name dynamic "exclusion" { for_each = try(override.value.exclusions, null) content { match_variable = exclusion.value.match_variable operator = exclusion.value.operator selector = try(exclusion.value.selector, null) } } dynamic "rule" { for_each = try(override.value.rules, null) content { action = rule.value.action rule_id = rule.value.rule_id enabled = try(rule.value.enabled, null) dynamic "exclusion" { for_each = try(rule.value.exclusions, null) content { match_variable = exclusion.value.match_variable operator = exclusion.value.operator selector = try(exclusion.value.selector, null) } } } } } } } } } resource "azurerm_cdn_frontdoor_security_policy" "security_policies" { for_each = try(var.front_door_security_policies != null ? var.front_door_security_policies : {}) cdn_frontdoor_profile_id = azapi_resource.front_door_profile.id name = each.value.name security_policies { firewall { cdn_frontdoor_firewall_policy_id = azurerm_cdn_frontdoor_firewall_policy.wafs[each.value.firewall.front_door_firewall_policy_key].id association { patterns_to_match = ["/*"] dynamic "domain" { for_each = local.filtered_epcds_for_security_policy[each.key] content { cdn_frontdoor_domain_id = domain.value } } } } } depends_on = [azurerm_cdn_frontdoor_custom_domain.cds, azurerm_cdn_frontdoor_endpoint.endpoints] }