frostmoln_appgw_waf_exclusion (Resource)
Narrows a WAF rule so it stops matching a request shape you know is good — a field that legitimately contains SQL, an upload endpoint, an API that posts XML.
Like a rule, an exclusion lands on the policy's draft and takes effect only when it is published and the gateway applies its configuration.
Target exactly one of target_secrule_id or target_tag.
Authoritative scope — who owns what on this resource, declared in internal/scopedecl and machine-checked against the schema.
Enacted and reconciled — every configurable attribute not listed below: the platform applies it, and a refresh reads the truth back.
Create-immutable — gateway_id, policy_id, rule_key: the exclusion is identified by its key within its policy; changing one is a different exclusion.
Example Usage
# Prefer an exclusion over disabling a rule: it narrows the rule to stop
# matching one known-good field on one path, rather than turning it off
# everywhere.
resource "frostmoln_appgw_waf_exclusion" "search_query" {
gateway_id = frostmoln_application_gateway.edge.id
policy_id = frostmoln_appgw_waf_policy.main.id
rule_key = "allow-sql-in-search-q"
target_secrule_id = 942100
variable = "ARGS"
selector = "q"
path_pattern = "^/search"
description = "The search box accepts free text that trips the SQLi rules."
}Schema
Required
gateway_id(String) The Application Gateway the policy belongs to.policy_id(String) The WAF policy this exclusion belongs to.rule_key(String) Your stable name for this exclusion: 1-64 lowercase letters, digits or hyphens, starting and ending with a letter or digit.variable(String) The variable to exclude from inspection, e.g.ARGSorREQUEST_HEADERS.
Optional
description(String) Why this exclusion exists. At most 1024 characters.Worth filling in: an exclusion is a hole in your firewall, and the next person reviewing it needs to know whether it is still justified.
ordinal(Number) Evaluation order within the policy.path_pattern(String) Limit the exclusion to matching request paths, so it applies where the false positive is rather than everywhere. At most 1024 characters.selector(String) A specific field within the variable, e.g. a parameter or header name. Omit to exclude the whole variable, which is much broader — prefer naming the one field that is a false positive.target_secrule_id(Number) The single managed rule to narrow, by its SecRule id.target_tag(String) The tag whose rules to narrow, e.g.attack-sqli. At most 128 characters.
Read-Only
created_at(String) The creation timestamp.revision(Number) A server-assigned counter, bumped on every write. Feed it intofrostmoln_appgw_waf_policy_publication.rule_revisionsso a publish is ordered after this exclusion withoutdepends_on.updated_at(String) The last update timestamp.