When Azure Front Door WAF blocks real users, teams tend to either disable rules in a panic or leave users stuck while they investigate. This runbook offers a middle path: confirm the false positive, add the narrowest possible exclusion, and validate the change with evidence and a rollback plan.
What this runbook solves
- False positives from managed OWASP rules on Azure Front Door.
- A safe tuning order: scoped exclusions first, custom rules second.
- Change control with logs, rollback and measurable acceptance criteria.
Safe tuning flow
Step 1: Confirm it’s a false positive
Before touching the policy, collect:
- The rule ID and rule set version that triggered.
- The request path, method and parameter location: query, header, cookie or body.
- The business context: which app flow broke, for whom, and when.
If the request really is malicious, don’t tune around it. Keep the block and fix the application behavior instead.
Step 2: Use the smallest exclusion scope
Azure Front Door WAF exclusions reduce collateral damage without disabling broad protections.
| Tuning option | Use when | Risk |
|---|---|---|
| Specific exclusion (parameter, header or cookie) | A single known-benign field triggers a managed rule | Low (preferred) |
| Disable an individual rule | Repeated evidence that one rule is incompatible with a workload | Medium |
| Disable a broad rule group | Only as a last resort during an incident | High (avoid) |
Exclusion design checklist
- The match variable is exact, for example
RequestArgNamesorRequestHeaderNames. - The operator is narrow (
Equalsor a precise selector) before broad patterns. - The scope is limited to the affected endpoint or workload where possible.
- A review is scheduled for 30 days later.
Step 3: Add custom rules only when needed
Custom rules suit explicit business logic: allow or block by IP, geography, header or URI pattern. They don’t replace managed OWASP coverage. Keep managed protection on and layer custom logic on top for workload specifics.
Step 4: Validate with measurable exit criteria
- The false-positive path now works end to end.
- No rise in successful malicious signatures on the same path family.
- The blocked-to-allowed ratio settles within the expected baseline.
- Both the security owner and the app owner sign off.
| Time | Milestone |
|---|---|
| T+0 | Detect |
| T+30 min | Capture evidence |
| T+60 min | Apply scoped exclusion |
| T+1 day | Monitor and compare |
| T+30 days | Check the exclusion is still needed |
Azure Front Door WAF operational guardrails
- Track every policy change with a ticket or incident ID.
- Keep a rollback plan: previous policy snapshot, owner and trigger.
- Review exclusions quarterly and remove stale ones.
- Work with application teams so payload format changes don’t quietly weaken WAF coverage.
Quick implementation checklist
- Collect blocked sample requests and matched rule IDs.
- Confirm the false positive with the app owner.
- Implement the smallest exclusion and document why.
- Run validation tests and review WAF logs.
- Approve and schedule a review date.
Related: Azure Firewall policy inheritance runbook and enforcing diagnostic settings so WAF logs are always captured.
Find the blocked request in your WAF logs
When a user reports a block, ask for the tracking reference shown on the block page. Azure Front Door adds it to every response, and it appears in the WAF log, so you can jump straight to the matching event instead of guessing.
If diagnostic settings send Front Door logs to Log Analytics in Azure diagnostics mode, this query lists the rules blocking the most requests:
AzureDiagnostics
| where Category == "FrontDoorWebApplicationFirewallLog"
| where action_s == "Block"
| summarize hits = count() by ruleName_s, requestUri_s
| order by hits desc
To inspect one event, filter on trackingReference_s with the value the user gave you, and read the matched variable and value in the details columns. Column names differ slightly if you use resource-specific tables, so adjust the query to your workspace.
Troubleshooting: the exclusion did not help
- The match variable or selector is wrong. Check whether the value arrives as a query argument, a body field, a header or a cookie, and that the selector matches the exact name. A JSON body field needs a body post argument selector, not a query argument.
- Several rules are adding to the score. Default Rule Set 2.x uses anomaly scoring: a request is blocked when the combined score of all matched rules reaches the threshold. Excluding one rule may not be enough if two or three others also match the same field. Check every rule ID logged for that request.
- The exclusion sits at the wrong level. You can scope an exclusion to the whole managed rule set, a rule group or a single rule. Make sure it covers the rule that actually fires.
- The change has not reached every edge yet. Policy updates can take several minutes to propagate globally. Re-test after a short wait before changing anything else.
- The policy is not linked where you think. Confirm the policy is associated with the endpoint and domain that served the blocked request.
FAQ
Should I switch the policy to Detection mode while I investigate?
Not on production traffic. Detection mode logs matches but stops blocking real attacks too. If you need it, attach a copy of the policy in Detection mode to a staging endpoint and replay the traffic there.
Do exclusions apply to custom rules?
No. Exclusions only change how managed rule sets evaluate a request. Custom rules are evaluated on their own terms, so fix a custom rule directly if it causes the false positive.
When should I disable a rule instead of excluding a field?
Only when you have repeated evidence that one rule is incompatible with the workload across many fields, and the app owner has accepted the risk. Record the decision and set a review date, the same as for an exclusion.
How do I stop the same false positive coming back after a release?
Add the blocked request to your release tests. If a change to the payload format triggers a managed rule in staging, you find out before users do.
Last reviewed: October 2026
Sources
- Azure Web Application Firewall on Azure Front Door (Microsoft Learn)
- Default rule set for Azure Front Door WAF (Microsoft Learn)
- Tune Azure Front Door WAF to reduce false positives (Microsoft Learn)
- Custom rules for Azure Front Door WAF (Microsoft Learn)
- Monitor and log Azure Front Door WAF (Microsoft Learn)
Discover more from Cloud Osprey
Subscribe to get the latest posts sent to your email.