Most engineers think…
"To build a security policy I have to hand-define every URL, parameter and file type myself."
Wrong — and that instinct is why so many ASM projects stall for months. You start from a template (Rapid Deployment is the common one), deploy it in Transparent mode, and let automatic policy building learn your app's real entities from live traffic. ASM watches actual requests, proposes learning suggestions (these URLs, these parameters, this file type are legitimate), and you review and accept them. The policy tightens around your real application in days, not months. This lesson builds the right instinct: template → learn → review → enforce.
① Templates — where a new policy starts
Think of buying a house. You don't pour the foundation, frame the walls, and run every pipe yourself from scratch — you start from a builder's standard plan and customise. A deployment template is that standard plan for an Advanced WAF policy. When you create a policy under Security ▸ Application Security ▸ Security Policies, you pick a template instead of starting from an empty page.
The two you meet first:
- Rapid Deployment — the fast baseline. It gives you generic protection (attack signatures + common building blocks) with minimal manual config, so you can go live in Transparent quickly and let learning do the rest. Most new policies start here.
- Application-ready / Comprehensive — a tighter, more application-specific positive-security model. It produces stronger protection but needs a longer learning and tuning window before you enforce.
The template only sets your starting point and how aggressively ASM learns. Whatever you pick, the real policy comes from tuning it against your actual traffic. The GUI module is still labelled Security ▸ Application Security, and many screens say "ASM" — that legacy module name lives on inside Advanced WAF.
Sneha at Infosys faces this
Sneha has 2 days to protect an internal HR app she's never touched. She starts hand-defining URLs and parameters one by one — and realises she'll never finish in time, let alone keep it current as the app changes.
She's building the policy the slow way. ASM is designed so you don't hand-define every entity — you start from a template and let it learn.
Check how the policy was created.
Security ▸ Application Security ▸ Security Policies → Create → choose a templateCreate the policy from the Rapid Deployment template in Transparent mode, attach it to the virtual server, and let automatic policy building learn the entities from real traffic. Review suggestions, then enforce.
After a day of traffic, open Traffic Learning — ASM has proposed the app's real URLs, parameters and file types as suggestions, ready to accept.
▶ Watch a policy get built — template, learn, review, enforce
Rahul at TCS stands up a new policy. Press Play for the build-by-learning path, then Break it to see what happens when he skips learning and enforces blind.
You must stand up a working BIG-IP Advanced WAF security policy fast, with minimal manual configuration. Best starting point?
Pause & Predict
A policy "allows" a request only if it fits the things the policy knows about your app — the file types, URLs, parameters and headers it has learned. What's the umbrella term for those four things in an ASM policy? Type your guess.
② Building blocks — the entities a policy allows
Now look inside the policy. Think of a strict reception desk: the receptionist has a list of who's expected today, which rooms they may enter, and what they may carry. Anyone or anything not on the list is flagged. In Advanced WAF that list is the policy's building blocks — the entities the policy knows about and allows.
The four entities you meet first
- File types — which extensions the app legitimately serves (
html,js,png…). A request for an unexpected type is flagged. - URLs — the app's real paths (
/login,/api/cart). A request to an unknown URL can raise an Illegal URL violation. - Parameters — the input fields and their rules (type, length, allowed characters). This is the most security-relevant entity — most attacks ride in a parameter value.
- Headers — the HTTP headers the policy expects, plus rules on them (mandatory Host, cookie handling, etc.).
Together these entities are the positive-security model — allow only what you know is good. The attack-signature engine (the negative model — that's the Attack Signatures lesson) runs alongside it. Building a policy is mostly about getting these entities right for your app.
You can add entities manually, but for a real app that's thousands of URLs and parameters that change every release. Instead, let automatic policy building (Path 3) learn them from live traffic and propose them as suggestions. Reserve manual entities for the few special cases learning can't infer. A learned policy stays current as the app evolves; a hand-typed one rots the next deploy.
Priya at Flipkart faces this
Priya hand-defined a handful of URLs and parameters and enforced the policy. The next release added a new /api/wishlist endpoint and a new form field — and real users on those pages started getting blocked.
The policy only knows the entities she hand-typed. The new URL and parameter aren't in the policy, so they're treated as illegal — a false positive caused by a stale, manually-built policy.
Turn on automatic policy building so ASM learns new entities from real traffic and proposes them. Accept the legitimate new URL/parameter suggestions, then Apply. Now the policy keeps up with each release.
Re-test the wishlist page after accepting the suggestions. It now loads — the new entities are part of the policy, not violations.
In a BIG-IP Advanced WAF security policy, what are file types, URLs, parameters and headers collectively called?
Pause & Predict
Learning is coming next. ASM can watch your real traffic and figure out most of these entities for you. What do you think it calls the things it proposes for you to accept — the "you should probably allow this" items? Type your guess.
③ Policy building & learning — let ASM do the typing
Here is the analogy that makes this lesson stick. Automatic policy building is like an apprentice receptionist who shadows the front desk for a week, noting who actually shows up and what they carry. By the end they've drafted the "expected visitors" list for you — you just review it and sign off. That apprentice is the ASM learning engine.
What policy building does
Automatic policy building watches your live traffic and proposes learning suggestions — new file types, URLs and parameters it has seen, plus rules to relax. You review them on the Traffic Learning screen and accept the legitimate ones. The whole point is to build a tight, accurate positive-security model without hand-typing thousands of entities, and to keep it current as the app changes.
The learning runway (deploy Transparent first)
Learning needs real traffic and a safety window. So you deploy the new policy in Transparent mode and let it run for a while. New or learned entities also go through a staging / enforcement readiness period (default 7 days) — they're observed, suggested, but not enforced — so a wrong guess never blocks a real user before you've reviewed it.
Accepted ≠ enforced (this never happens by itself)
This is the #1 trap. Accepting a suggestion in the editor does not put it live. You still take the action:
- Review the learning suggestions. A suggestion that matches your legitimate traffic → accept it into the policy. A suggestion that looks like an attack → leave it (it'll be a violation once enforced).
- Enforce ready entities — once the readiness period elapses, enforce the entities that are ready so the policy starts acting on them.
- Apply Policy. Like everything in Advanced WAF, the change is staged in the editor until you Apply.
Until you enforce and apply, accepted entities still only log. Many "the WAF won't enforce my changes" tickets are exactly this — suggestions accepted but never applied.
▶ Watch a policy learn its entities — then watch someone enforce blind
Karthik at Wipro builds a policy for a new app. Play the learn-then-enforce path, then Break it to see what happens when he enforces with no learning.
The four stages of a policy entity — tap each card
The front names the stage; the back gives you the "so what" — what the entity is doing to traffic right then.
Policy building is observing real traffic and proposing suggestions. So what: in Transparent mode it logs and suggests but blocks nothing — the apprentice is shadowing the front desk.
An entity ASM proposes on the Traffic Learning screen. So what: it's a draft "you should probably allow this" — nothing happens until you accept it.
You added the suggestion to the policy; it rides out the readiness period. So what: "in the policy but not yet enforcing" — you still must enforce ready entities + Apply.
The entity is live and the policy acts on it. So what: in Blocking mode, a request that violates this entity is now dropped with a support ID — the policy is protecting the app.
What does automatic policy building (the Policy Building / learning engine) do in BIG-IP Advanced WAF?
Pause & Predict
You've learned and accepted the app's real entities. The last step turns the policy from a passive observer into an active gate. What's that final flip called — the enforcement mode that makes ASM actually drop violations? Type your guess.
④ Review & enforce — from learning to live
You've learned the entities. The last stretch turns suggestions into a live, protective policy without breaking the app. Two things decide whether the policy actually protects: the entities you accepted (Path 3) and the enforcement mode (this section). Get either wrong and the WAF either lets attacks through or blocks real users.
Review the learning suggestions
On Security ▸ Application Security ▸ Policy Building ▸ Traffic Learning, each suggestion tells you what ASM saw and how often. Your job is to sort them:
- Legitimate? A real URL, a real parameter, a normal file type → accept it into the policy.
- Attack-shaped? A suspicious value, an odd path, a probing parameter → leave it. Don't widen the policy to fit an attacker; once enforced, that request becomes a violation.
The volume drops fast — most of an app's entities are learned in the first day or two of real traffic.
Enforce, then go Blocking
Accepting a suggestion adds it to the policy but doesn't make the policy act. Two final flips:
- Enforce ready entities — once the readiness period elapses, enforce the entities so the policy treats out-of-bounds requests as violations.
- Switch the enforcement mode to Blocking and Apply Policy — now the policy actually drops violations instead of just logging them.
So the chain to a protective policy is: learn entities → accept the legit ones → enforce → mode = Blocking + Apply. Miss the last flip and the policy only logs. (Whether to go Blocking, and when, is the global go-live decision covered deeper in the deployment lesson.)
root@(bigip01)(cfg-sync Standalone)(Active)(/Common)(tmos)# list asm policy /Common/app_pol \ enforcement-mode enforcement-readiness-period # review the learned/suggested entities in the GUI Traffic Learning screen, then enforce
asm policy /Common/app_pol {
enforcement-mode transparent
enforcement-readiness-period 7
}
# Policy is learning in Transparent; 7-day readiness window confirmed before entities enforce.root@(bigip01)(tmos)# modify asm policy /Common/app_pol entities enforce-readiness root@(bigip01)(tmos)# modify asm policy /Common/app_pol enforcement-mode blocking root@(bigip01)(tmos)# modify asm policy /Common/app_pol apply
Ready entities enforced: 318 URLs, 642 parameters, 14 file types.
asm policy /Common/app_pol { enforcement-mode blocking }
Policy /Common/app_pol applied. Active.
# The learned entities now enforce; in Blocking mode, requests outside them are dropped with a support ID.Don't blanket-accept every learning suggestion just to empty the Traffic Learning list. Some "suggestions" are an attacker probing your app — a weird URL, a SQL-keyword parameter value. Accepting those widens the policy to allow the attack. Read each suggestion: accept the legitimate entities, and leave the attack-shaped ones so they become violations once you enforce. Blindly accepting everything turns your positive-security model into a doormat.
▶ Watch the final flip — learn-then-Blocking vs enforce-blind
A tuned policy meets a request that violates an entity. Play the Blocking drop after learning, then Break it to see what enforcing with no learning does to a real user.
Aditya at HCL faces this
Aditya accepted a large set of learning suggestions and is sure the new URLs and parameters are in the policy. But test traffic to those URLs still raises Illegal-URL violations — the policy isn't acting on the entities he accepted.
He accepted the suggestions but never Applied the policy (and/or the entities are still in their staging window). Accepting in the editor doesn't commit anything until you Apply.
Enforce ready entities if they're past the readiness window, then click Apply Policy. The accepted URLs/parameters now take effect.
Re-test the URLs. They now load cleanly — the accepted entities are part of the live policy, not pending changes.
Never claim a policy is "tuned and live" from the config screen. Hit a known-good URL and send a safe synthetic attack (e.g. ' OR 1=1-- from your test box), then open Security ▸ Event Logs ▸ Application ▸ Requests and read both. The good URL = clean 200 (entity learned + accepted). The attack = Blocked with a support ID (entity/signature enforced + Blocking). If the good URL is blocked, you missed a learning suggestion; if the attack only Alarms, the policy is still Transparent.
root@(bigip01)(tmos)# show asm policy /Common/app_pol # then read a test request in the Event Log by support ID
asm policy /Common/app_pol Enforcement Mode: blocking 2026-06-02 14:22 src 203.0.113.7 vs 10.10.20.5:443 Violation: Illegal parameter value (q=' OR 1=1--) Result: BLOCKED Support ID: 18007244126553882151 # If Mode = transparent → only Alarmed. If a legit URL is BLOCKED → accept its learning suggestion.
You built a policy and put it straight into Blocking mode without any learning. Real users immediately get blocked on legitimate pages. Why?
🤖 Ask the AI Tutor
Tap any question — instant, scoped to this lesson. No login, no waiting.
Pre-curated from F5 techdocs + DevCentral, scoped to BIG-IP Advanced WAF (formerly ASM) security-policy building. For a live prod issue, paste your Event-Log export into chat.techclick.in.
📝 Wrap-up assessment — six more
You've answered 4 inline. Six left. 70% (7 of 10) marks the lesson complete on your profile. Tap Submit all answers at the end.
🧠 In your own words
Type one line: how do you build an ASM security policy fast without breaking the app — what's the order from template to enforced? Then compare to the expert version.
🗣 Teach a friend
Best way to lock it in — explain it in one line to a teammate. Tap to generate a paste-ready summary.
📖 Glossary
- Deployment template
- The starting blueprint for a new ASM policy. It pre-loads a baseline of protections and sets how aggressively ASM learns. Rapid Deployment is the lightweight default; application-ready templates are tighter but need more tuning.
- Rapid Deployment
- A lightweight template that ships a baseline of generic protections (attack signatures + common building blocks) so you can deploy fast in Transparent mode and then tune via learning.
- Building blocks (entities)
- The file types, URLs, parameters and headers a policy knows about and allows. Together they form the positive-security model — ASM flags anything outside them.
- File type / URL / parameter / header
- The four entities you meet first. File types = allowed extensions; URLs = allowed paths; parameters = input fields and their rules (most attacks ride here); headers = expected HTTP headers and rules.
- Positive vs negative security
- Positive = allow only known-good entities (the building blocks). Negative = block known-bad attack signatures. A policy runs both.
- Automatic policy building
- The ASM learning engine. It observes real traffic and proposes learning suggestions (new entities, relaxed rules) so the policy tightens around your actual app without you hand-defining everything.
- Learning suggestion
- An "add this URL / allow this parameter / relax this rule" item ASM surfaces on the Traffic Learning screen, derived from observed traffic. You review and accept the legitimate ones.
- Traffic Learning
- The screen (Security ▸ Application Security ▸ Policy Building ▸ Traffic Learning) where learning suggestions appear and you accept or leave them.
- Enforcement mode (Transparent vs Blocking)
- Transparent = detect and log violations but never block (the learning/tuning state). Blocking = drop violations. You build in Transparent, then switch to Blocking.
- Enforcement readiness period
- The staging window (default 7 days) during which new/learned entities and signatures are observed but not enforced, so you can review before they block.
📚 Sources
- F5 techdocs — BIG-IP Advanced WAF / ASM: Implementations & About security policies (creating a policy, deployment templates including Rapid Deployment, choosing application-ready vs lightweight templates). techdocs.f5.com
- F5 techdocs — About security policy building blocks & Working with file types, URLs, parameters and headers (entities = file types / URLs / parameters / headers; the positive-security model). techdocs.f5.com
- F5 techdocs — About automatic policy building & Refining a policy with learning (the Policy Building engine; learning suggestions; the Traffic Learning screen; accept/ignore suggestions). techdocs.f5.com
- F5 techdocs — Enforcement modes for security policies & Enforcement readiness (Transparent = detect/log only; Blocking = drop; readiness period default 7 days; enforce ready entities). techdocs.f5.com
- F5 DevCentral — ASM policy building best practices & positive-security walk-throughs ("start from a template, learn in Transparent, accept suggestions, then enforce"; don't blanket-accept). community.f5.com
- r/networking & r/f5networks practitioner threads — "new ASM policy blocked everyone = went Blocking before learning" and "let policy building learn, review suggestions, then enforce". reddit.com
- F5 Certification — 303 — BIG-IP ASM Specialist Exam Blueprint (security-policy creation, templates, building blocks, automatic policy building, enforcement; cert anchor: 90 min, 80 questions, pass 245/350). education.f5.com / f5.com
What's next?
You can now build a policy end-to-end: pick a template, learn the entities in Transparent mode, accept the suggestions, and tighten to enforced. Next, go deeper on the positive-security & learning half — how ASM learns and refines URLs, parameters and the entities you just met — and on the negative-security half in the attack signatures lesson. Then false-positive tuning ties them together.