[{"data":1,"prerenderedAt":575},["ShallowReactive",2],{"navigation":3,"\u002Fsecurity\u002Faccess-policies":250,"\u002Fsecurity\u002Faccess-policies-surround":570},[4,28,56,91,117,135,169,224],{"title":5,"path":6,"stem":7,"children":8,"icon":27},"Start here","\u002Fgetting-started","1.getting-started\u002F1.index",[9,11,15,19,23],{"title":10,"path":6,"stem":7},"Introduction",{"title":12,"path":13,"stem":14},"Decisions and open gates","\u002Fgetting-started\u002Fdecisions","1.getting-started\u002F2.decisions",{"title":16,"path":17,"stem":18},"Scope and non-goals","\u002Fgetting-started\u002Fscope","1.getting-started\u002F3.scope",{"title":20,"path":21,"stem":22},"Organization pilot","\u002Fgetting-started\u002Fpilot","1.getting-started\u002F4.pilot",{"title":24,"path":25,"stem":26},"Economics and quotas","\u002Fgetting-started\u002Feconomics","1.getting-started\u002F5.economics","i-lucide-compass",{"title":29,"path":30,"stem":31,"children":32,"icon":55},"Architecture","\u002Farchitecture","2.architecture\u002F1.index",[33,35,39,43,47,51],{"title":34,"path":30,"stem":31},"System architecture",{"title":36,"path":37,"stem":38},"Trust zones","\u002Farchitecture\u002Ftrust-zones","2.architecture\u002F2.trust-zones",{"title":40,"path":41,"stem":42},"Control plane","\u002Farchitecture\u002Fcontrol-plane","2.architecture\u002F3.control-plane",{"title":44,"path":45,"stem":46},"Organization tenancy","\u002Farchitecture\u002Ftenancy","2.architecture\u002F4.tenancy",{"title":48,"path":49,"stem":50},"Core data model","\u002Farchitecture\u002Fdata-model","2.architecture\u002F5.data-model",{"title":52,"path":53,"stem":54},"Codebase organization","\u002Farchitecture\u002Fcodebase","2.architecture\u002F6.codebase","i-lucide-layers",{"title":57,"icon":58,"path":59,"stem":60,"children":61,"page":90},"Identity and security","i-lucide-shield-check","\u002Fsecurity","3.security",[62,66,70,74,78,82,86],{"title":63,"path":64,"stem":65},"Identity and sessions","\u002Fsecurity\u002Fidentity","3.security\u002F1.identity",{"title":67,"path":68,"stem":69},"Domains and TLS","\u002Fsecurity\u002Fdomains","3.security\u002F2.domains",{"title":71,"path":72,"stem":73},"Ingress and egress","\u002Fsecurity\u002Fnetworking","3.security\u002F3.networking",{"title":75,"path":76,"stem":77},"Access policies and WAF-lite","\u002Fsecurity\u002Faccess-policies","3.security\u002F4.access-policies",{"title":79,"path":80,"stem":81},"Secrets and integrations","\u002Fsecurity\u002Fsecrets-integrations","3.security\u002F5.secrets-integrations",{"title":83,"path":84,"stem":85},"Governance and ownership","\u002Fsecurity\u002Fgovernance","3.security\u002F6.governance",{"title":87,"path":88,"stem":89},"Threat model","\u002Fsecurity\u002Fthreat-model","3.security\u002F7.threat-model",false,{"title":92,"icon":93,"path":94,"stem":95,"children":96,"page":90},"Building applications","i-lucide-code","\u002Fdevelopment","4.development",[97,101,105,109,113],{"title":98,"path":99,"stem":100},"AI and MCP","\u002Fdevelopment\u002Fai-mcp","4.development\u002F1.ai-mcp",{"title":102,"path":103,"stem":104},"Source control","\u002Fdevelopment\u002Fsource-control","4.development\u002F2.source-control",{"title":106,"path":107,"stem":108},"Sandboxed builds","\u002Fdevelopment\u002Fbuilds","4.development\u002F3.builds",{"title":110,"path":111,"stem":112},"Runtime contract and SDK","\u002Fdevelopment\u002Fruntime-contract","4.development\u002F4.runtime-contract",{"title":114,"path":115,"stem":116},"APIs and protocols","\u002Fdevelopment\u002Fapi","4.development\u002F5.api",{"title":118,"icon":119,"path":120,"stem":121,"children":122,"page":90},"Runtime and delivery","i-lucide-rocket","\u002Fdelivery","5.delivery",[123,127,131],{"title":124,"path":125,"stem":126},"Runtime clusters and previews","\u002Fdelivery\u002Fruntime-clusters","5.delivery\u002F1.runtime-clusters",{"title":128,"path":129,"stem":130},"Deployments and approvals","\u002Fdelivery\u002Fdeployments","5.delivery\u002F2.deployments",{"title":132,"path":133,"stem":134},"Databases and recovery","\u002Fdelivery\u002Fdata-recovery","5.delivery\u002F3.data-recovery",{"title":136,"icon":137,"path":138,"stem":139,"children":140,"page":90},"Operations","i-lucide-activity","\u002Foperations","6.operations",[141,145,149,153,157,161,165],{"title":142,"path":143,"stem":144},"Observability and audit","\u002Foperations\u002Fobservability","6.operations\u002F1.observability",{"title":146,"path":147,"stem":148},"Operating model","\u002Foperations\u002Foperating-model","6.operations\u002F2.operating-model",{"title":150,"path":151,"stem":152},"Deploy and roll back","\u002Foperations\u002Fdeploy-rollback","6.operations\u002F3.deploy-rollback",{"title":154,"path":155,"stem":156},"Back up and restore","\u002Foperations\u002Fbackup-restore","6.operations\u002F4.backup-restore",{"title":158,"path":159,"stem":160},"Upgrade and patch","\u002Foperations\u002Fupgrades","6.operations\u002F5.upgrades",{"title":162,"path":163,"stem":164},"Rotate keys and credentials","\u002Foperations\u002Fkey-rotation","6.operations\u002F6.key-rotation",{"title":166,"path":167,"stem":168},"Incidents and access revocation","\u002Foperations\u002Fincidents","6.operations\u002F7.incidents",{"title":170,"path":171,"stem":172,"children":173,"icon":223},"Implementation plan","\u002Froadmap","7.roadmap\u002F01.index",[174,175,179,183,187,191,195,199,203,207,211,215,219],{"title":170,"path":171,"stem":172},{"title":176,"path":177,"stem":178},"Phase 0: architecture spikes and ADRs","\u002Froadmap\u002Fphase-0","7.roadmap\u002F02.phase-0",{"title":180,"path":181,"stem":182},"Phase 1: control-plane foundation","\u002Froadmap\u002Fphase-1","7.roadmap\u002F03.phase-1",{"title":184,"path":185,"stem":186},"Phase 2: managed source and change sets","\u002Froadmap\u002Fphase-2","7.roadmap\u002F04.phase-2",{"title":188,"path":189,"stem":190},"Phase 3: sandboxed build system","\u002Froadmap\u002Fphase-3","7.roadmap\u002F05.phase-3",{"title":192,"path":193,"stem":194},"Phase 4: runtime and data plane","\u002Froadmap\u002Fphase-4","7.roadmap\u002F06.phase-4",{"title":196,"path":197,"stem":198},"Phase 5: deployment, preview, migration, and recovery","\u002Froadmap\u002Fphase-5","7.roadmap\u002F07.phase-5",{"title":200,"path":201,"stem":202},"Phase 6: Entra identity and security policy","\u002Froadmap\u002Fphase-6","7.roadmap\u002F08.phase-6",{"title":204,"path":205,"stem":206},"Phase 7: MCP and AI-native workflow","\u002Froadmap\u002Fphase-7","7.roadmap\u002F09.phase-7",{"title":208,"path":209,"stem":210},"Phase 8: Pilot hardening","\u002Froadmap\u002Fphase-8","7.roadmap\u002F10.phase-8",{"title":212,"path":213,"stem":214},"Phase 9: developer hybrid and v1 GA","\u002Froadmap\u002Fphase-9","7.roadmap\u002F11.phase-9",{"title":216,"path":217,"stem":218},"Test strategy","\u002Froadmap\u002Ftesting","7.roadmap\u002F12.testing",{"title":220,"path":221,"stem":222},"Definition of done","\u002Froadmap\u002Fdefinition-of-done","7.roadmap\u002F13.definition-of-done","i-lucide-list-checks",{"title":225,"icon":226,"path":227,"stem":228,"children":229,"page":90},"Reference","i-lucide-book-open","\u002Freference","8.reference",[230,234,238,242,246],{"title":231,"path":232,"stem":233},"Plan coverage","\u002Freference\u002Fplan-coverage","8.reference\u002F1.plan-coverage",{"title":235,"path":236,"stem":237},"Decision register","\u002Freference\u002Fdecisions","8.reference\u002F2.decisions",{"title":239,"path":240,"stem":241},"Glossary","\u002Freference\u002Fglossary","8.reference\u002F3.glossary",{"title":243,"path":244,"stem":245},"Sources","\u002Freference\u002Fsources","8.reference\u002F4.sources",{"title":247,"path":248,"stem":249},"Contributing and docs access","\u002Freference\u002Fcontributing","8.reference\u002F5.contributing",{"id":251,"title":75,"body":252,"description":563,"extension":564,"links":565,"meta":566,"navigation":567,"path":76,"seo":568,"stem":77,"__hash__":569},"docs\u002F3.security\u002F4.access-policies.md",{"type":253,"value":254,"toc":549},"minimark",[255,271,276,281,284,287,315,319,322,324,350,353,364,368,371,377,380,386,395,398,415,419,422,428,431,435,438,449,452,455,458,464,468,471,504,507,510,513,517,520,523,546],[256,257,258],"note",{},[259,260,261,265,266,270],"p",{},[262,263,264],"strong",{},"v1 design baseline."," This page specifies intended behavior. Delivery and validation are tracked in the ",[267,268,269],"a",{"href":171},"implementation plan","; it is not a claim that the platform is already implemented.",[272,273,275],"h2",{"id":274},"two-separate-layers","Two separate layers",[277,278,280],"h3",{"id":279},"identity-access","Identity access",[259,282,283],{},"Controls who may enter an app.",[259,285,286],{},"Selectors:",[288,289,290,294,297,300,303,306,309,312],"ul",{},[291,292,293],"li",{},"Authenticated or public",[291,295,296],{},"Organization membership",[291,298,299],{},"Identity provider",[291,301,302],{},"Entra app role",[291,304,305],{},"intrnl group",[291,307,308],{},"Network\u002FIP list",[291,310,311],{},"App environment",[291,313,314],{},"User\u002Fplatform role",[277,316,318],{"id":317},"traffic-security","Traffic security",[259,320,321],{},"Controls request characteristics.",[259,323,286],{},[288,325,326,329,332,335,338,341,344,347],{},[291,327,328],{},"Source IP",[291,330,331],{},"Path",[291,333,334],{},"Method",[291,336,337],{},"Request size",[291,339,340],{},"Rate",[291,342,343],{},"Header presence",[291,345,346],{},"Host\u002Fenvironment",[291,348,349],{},"Future country\u002FASN",[259,351,352],{},"Actions:",[354,355,361],"pre",{"className":356,"code":358,"language":359,"meta":360},[357],"language-text","Allow\nBlock\nRequire authentication\nRequire group\nRequire network list\nRate limit\nLog\n","text","",[362,363,358],"code",{"__ignoreMap":360},[272,365,367],{"id":366},"named-ip-lists","Named IP lists",[259,369,370],{},"Organization administrators create reusable lists:",[354,372,375],{"className":373,"code":374,"language":359,"meta":360},[357],"Organization Offices\n- 203.0.113.14\u002F32   Main office\n- 198.51.100.0\u002F24  VPN egress\n- 2001:db8::\u002F48    Office IPv6\n",[362,376,374],{"__ignoreMap":360},[259,378,379],{},"Entry fields:",[354,381,384],{"className":382,"code":383,"language":359,"meta":360},[357],"address or CIDR\ndisplay name\ndescription\noptional expiration\ncreated by\ncreated at\nlast updated by\n",[362,385,383],{"__ignoreMap":360},[259,387,388,389],{},"Lists may mix individual IPv4\u002FIPv6 addresses and CIDR ranges, following the useful model established by Cloudflare custom lists. ",[267,390,394],{"href":391,"rel":392},"https:\u002F\u002Fdevelopers.cloudflare.com\u002Fwaf\u002Ftools\u002Flists\u002F",[393],"nofollow","Cloudflare IP lists",[259,396,397],{},"Show administrators:",[288,399,400,403,406,409,412],{},[291,401,402],{},"Which policies reference a list",[291,404,405],{},"Which apps are affected",[291,407,408],{},"Validation\u002Fnormalization result",[291,410,411],{},"Expired or overlapping entries",[291,413,414],{},"Complete change history",[272,416,418],{"id":417},"access-profiles","Access profiles",[259,420,421],{},"User-facing presets:",[354,423,426],{"className":424,"code":425,"language":359,"meta":360},[357],"Private to creator\nOrganization users\nOrganization users + approved networks\nSpecific groups\nAdministrators only\nPublic\nCustom\n",[362,427,425],{"__ignoreMap":360},[259,429,430],{},"“Public” is unavailable unless the organization permits public applications.",[272,432,434],{"id":433},"mandatory-organization-rules","Mandatory organization rules",[259,436,437],{},"Separate:",[288,439,440,443,446],{},[291,441,442],{},"Organization defaults",[291,444,445],{},"Organization-mandatory constraints",[291,447,448],{},"App-level settings",[259,450,451],{},"An app owner may override a default only if delegated permission allows it.",[259,453,454],{},"An app owner cannot weaken a mandatory rule.",[259,456,457],{},"Example:",[354,459,462],{"className":460,"code":461,"language":359,"meta":360},[357],"Organization requirements:\n- Entra authentication\n- internal only\n- no public apps\n- no regulated data\n- no unrestricted egress\n\nEquipment Requests app:\n- Operations group\n- Organization Offices IP list\n",[362,463,461],{"__ignoreMap":360},[272,465,467],{"id":466},"policy-evaluation-order","Policy evaluation order",[259,469,470],{},"A deterministic order:",[472,473,474,477,480,483,486,489,492,495,498,501],"ol",{},[291,475,476],{},"Validate route and active app\u002Fenvironment.",[291,478,479],{},"Apply organization suspension\u002Fdeny state.",[291,481,482],{},"Apply mandatory global network deny rules.",[291,484,485],{},"Apply coarse abuse\u002Frate controls.",[291,487,488],{},"Resolve or establish identity if required.",[291,490,491],{},"Apply organization mandatory identity rules.",[291,493,494],{},"Apply application access profile.",[291,496,497],{},"Apply path\u002Fmethod\u002Fbody-size rules.",[291,499,500],{},"Apply app-specific rate limits.",[291,502,503],{},"Forward to runtime.",[259,505,506],{},"Policy changes are versioned.",[259,508,509],{},"A deployment record references the policy version active at deployment time.",[259,511,512],{},"Security-policy changes that expand access can require approval even when code does not change.",[272,514,516],{"id":515},"what-waf-lite-is-not","What WAF-lite is not",[259,518,519],{},"V1 does not claim parity with a complete managed WAF.",[259,521,522],{},"It does not initially include:",[288,524,525,528,531,534,537,540,543],{},[291,526,527],{},"Managed CVE signatures",[291,529,530],{},"Advanced bot management",[291,532,533],{},"Full expression-language compatibility",[291,535,536],{},"Browser challenge systems",[291,538,539],{},"DDoS scrubbing",[291,541,542],{},"Machine-learning anomaly detection",[291,544,545],{},"Every Cloudflare field\u002Faction",[259,547,548],{},"The outer edge can still provide commodity DDoS\u002FWAF protection, while intrnl provides organization-aware internal-app policy.",{"title":360,"searchDepth":550,"depth":551,"links":552},1,2,[553,558,559,560,561,562],{"id":274,"depth":551,"text":275,"children":554},[555,557],{"id":279,"depth":556,"text":280},3,{"id":317,"depth":556,"text":318},{"id":366,"depth":551,"text":367},{"id":417,"depth":551,"text":418},{"id":433,"depth":551,"text":434},{"id":466,"depth":551,"text":467},{"id":515,"depth":551,"text":516},"Named IP lists, reusable access profiles, mandatory organization rules, and policy evaluation order.","md",null,{},true,{"title":75,"description":563},"PC146An2_6cDbFb5BROldQZSkzFHcV8kgOpJ_tJ4-yQ",[571,573],{"title":71,"path":72,"stem":73,"description":572,"children":-1},"Trusted edge traffic, client-IP derivation, SSRF defenses, and approved outbound capabilities.",{"title":79,"path":80,"stem":81,"description":574,"children":-1},"Encrypted secret versions, credential-injecting integration bindings, approvals, and rotation.",1790019415367]