CINXE.COM
WAF Managed Rules configuration using Terraform · Cloudflare Terraform docs
<!doctype html> <html lang="en" dir="ltr" data-theme="dark" data-has-toc data-has-sidebar class="astro-bguv2lll"> <head> <base href="https://developers.cloudflare.com/terraform/additional-configurations/waf-managed-rulesets/"> <script type="module" src="/_astro/Head.astro_astro_type_script_index_0_lang.BN2-VQBT.js"></script> <script type="module" src="/_astro/Head.astro_astro_type_script_index_1_lang.SiXpPIU5.js"></script> <script type="module" src="/_astro/Head.astro_astro_type_script_index_2_lang.DawEFJ7Z.js"></script> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>WAF Managed Rules configuration using Terraform · Cloudflare Terraform docs</title> <link rel="canonical" href="https://developers.cloudflare.com/terraform/additional-configurations/waf-managed-rulesets/"> <link rel="sitemap" href="/sitemap-index.xml"> <link rel="shortcut icon" href="/favicon.png" type="image/png"> <meta name="generator" content="Astro v5.2.1"> <meta name="generator" content="Starlight v0.31.1"> <meta property="og:type" content="article"> <meta property="og:url" content="https://developers.cloudflare.com/terraform/additional-configurations/waf-managed-rulesets/"> <meta property="og:locale" content="en"> <meta property="og:description" content="This page provides examples of deploying and configuring WAF Managed Rules in your zone or account using Terraform. It covers the following configurations:"> <meta property="og:site_name" content="Cloudflare Docs"> <meta name="twitter:card" content="summary_large_image"> <meta name="description" content="This page provides examples of deploying and configuring WAF Managed Rules in your zone or account using Terraform. It covers the following configurations:"> <meta property="og:title" content="WAF Managed Rules configuration using Terraform · Cloudflare Terraform docs"> <meta name="pcx_product" content="Terraform"> <meta name="algolia_product_filter" content="Terraform"> <meta name="image" content="https://developers.cloudflare.com/core-services-preview.png"> <meta name="og:image" content="https://developers.cloudflare.com/core-services-preview.png"> <meta name="twitter:image" content="https://developers.cloudflare.com/core-services-preview.png"> <meta name="pcx_content_group" content="Cloudflare essentials"> <meta name="pcx_content_type" content="how-to"> <meta name="algolia_content_type" content="how-to"> <script> window.StarlightThemeProvider = (() => { const storedTheme = typeof localStorage !== 'undefined' && localStorage.getItem('starlight-theme'); const theme = storedTheme || (window.matchMedia('(prefers-color-scheme: light)').matches ? 'light' : 'dark'); document.documentElement.dataset.theme = theme === 'light' ? 'light' : 'dark'; return { updatePickers(theme = storedTheme || 'auto') { document.querySelectorAll('starlight-theme-select').forEach((picker) => { const select = picker.querySelector('select'); if (select) select.value = theme; /** @type {HTMLTemplateElement | null} */ const tmpl = document.querySelector(`#theme-icons`); const newIcon = tmpl && tmpl.content.querySelector('.' + theme); if (newIcon) { const oldIcon = picker.querySelector('svg.label-icon'); if (oldIcon) { oldIcon.replaceChildren(...newIcon.cloneNode(true).childNodes); } } }); }, }; })(); </script> <template id="theme-icons"> <svg aria-hidden="true" class="light astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"> <path d="M5 12a1 1 0 0 0-1-1H3a1 1 0 0 0 0 2h1a1 1 0 0 0 1-1Zm.64 5-.71.71a1 1 0 0 0 0 1.41 1 1 0 0 0 1.41 0l.71-.71A1 1 0 0 0 5.64 17ZM12 5a1 1 0 0 0 1-1V3a1 1 0 0 0-2 0v1a1 1 0 0 0 1 1Zm5.66 2.34a1 1 0 0 0 .7-.29l.71-.71a1 1 0 1 0-1.41-1.41l-.66.71a1 1 0 0 0 0 1.41 1 1 0 0 0 .66.29Zm-12-.29a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.71-.71a1.004 1.004 0 1 0-1.43 1.41l.73.71ZM21 11h-1a1 1 0 0 0 0 2h1a1 1 0 0 0 0-2Zm-2.64 6A1 1 0 0 0 17 18.36l.71.71a1 1 0 0 0 1.41 0 1 1 0 0 0 0-1.41l-.76-.66ZM12 6.5a5.5 5.5 0 1 0 5.5 5.5A5.51 5.51 0 0 0 12 6.5Zm0 9a3.5 3.5 0 1 1 0-7 3.5 3.5 0 0 1 0 7Zm0 3.5a1 1 0 0 0-1 1v1a1 1 0 0 0 2 0v-1a1 1 0 0 0-1-1Z" /> </svg> <svg aria-hidden="true" class="dark astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"> <path d="M21.64 13a1 1 0 0 0-1.05-.14 8.049 8.049 0 0 1-3.37.73 8.15 8.15 0 0 1-8.14-8.1 8.59 8.59 0 0 1 .25-2A1 1 0 0 0 8 2.36a10.14 10.14 0 1 0 14 11.69 1 1 0 0 0-.36-1.05Zm-9.5 6.69A8.14 8.14 0 0 1 7.08 5.22v.27a10.15 10.15 0 0 0 10.14 10.14 9.784 9.784 0 0 0 2.1-.22 8.11 8.11 0 0 1-7.18 4.32v-.04Z" /> </svg> <svg aria-hidden="true" class="auto astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"> <path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z" /> </svg> </template> <link rel="stylesheet" href="/_astro/print.BL8QyxEA.css" media="print"> <link rel="stylesheet" href="/_astro/props.DH3lyL-U.css"> <style>*,*:before,*:after{box-sizing:border-box}*{margin:0}html{color-scheme:dark;accent-color:var(--sl-color-accent)}html[data-theme=light]{color-scheme:light}body{font-family:var(--__sl-font);line-height:var(--sl-line-height);-webkit-font-smoothing:antialiased;color:var(--sl-color-text);background-color:var(--sl-color-bg)}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6,code{overflow-wrap:anywhere}code{font-family:var(--__sl-font-mono)} :root{--astro-code-foreground: var(--sl-color-white);--astro-code-background: var(--sl-color-gray-6);--astro-code-token-constant: var(--sl-color-blue-high);--astro-code-token-string: var(--sl-color-green-high);--astro-code-token-comment: var(--sl-color-gray-2);--astro-code-token-keyword: var(--sl-color-purple-high);--astro-code-token-parameter: var(--sl-color-red-high);--astro-code-token-function: var(--sl-color-red-high);--astro-code-token-string-expression: var(--sl-color-green-high);--astro-code-token-punctuation: var(--sl-color-gray-2);--astro-code-token-link: var(--sl-color-blue-high)} html:not([data-has-toc]){--sl-content-width: 67.5rem} .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.sl-hidden{display:none}.sl-flex{display:flex}.sl-block{display:block}@media (min-width: 50rem){.md\:sl-hidden{display:none}.md\:sl-flex{display:flex}.md\:sl-block{display:block}}@media (min-width: 72rem){.lg\:sl-hidden{display:none}.lg\:sl-flex{display:flex}.lg\:sl-block{display:block}}[data-theme=light] .light\:sl-hidden,[data-theme=dark] .dark\:sl-hidden{display:none}[dir=rtl] .rtl\:flip:not(:where([dir=rtl] [dir=ltr] *)){transform:scaleX(-1)} .sl-banner:where(.astro-laz2plt2){--__sl-banner-text: var(--sl-color-banner-text, var(--sl-color-text-invert));padding:var(--sl-nav-pad-y) var(--sl-nav-pad-x);background-color:var(--sl-color-banner-bg, var(--sl-color-bg-accent));color:var(--__sl-banner-text);line-height:var(--sl-line-height-headings);text-align:center;text-wrap:balance;box-shadow:var(--sl-shadow-sm)}.sl-banner:where(.astro-laz2plt2) a{color:var(--__sl-banner-text)} .content-panel:where(.astro-7nkwcw3z){padding:1.5rem var(--sl-content-pad-x)}.content-panel:where(.astro-7nkwcw3z)+.content-panel:where(.astro-7nkwcw3z){border-top:1px solid var(--sl-color-hairline)}.sl-container:where(.astro-7nkwcw3z){max-width:var(--sl-content-width)}.sl-container:where(.astro-7nkwcw3z)>*+*{margin-top:1.5rem}@media (min-width: 72rem){.sl-container:where(.astro-7nkwcw3z){margin-inline:var(--sl-content-margin-inline, auto)}} p:where(.astro-opzsrvew){border:1px solid var(--sl-color-orange);padding:.75em 1em;background-color:var(--sl-color-orange-low);color:var(--sl-color-orange-high);width:-moz-max-content;width:max-content;max-width:100%;align-items:center;gap:.75em;font-size:var(--sl-text-body-sm);line-height:var(--sl-line-height-headings)} #ot-sdk-btn:where(.astro-hwxmvrii).ot-sdk-show-settings{border:none!important;color:inherit!important;font-size:inherit!important;line-height:inherit!important;padding:inherit!important;font-family:var(--sl-font-family)!important;background-color:inherit!important}#ot-sdk-btn:where(.astro-hwxmvrii).ot-sdk-show-settings:hover{background-color:inherit!important} a:where(.astro-eez2twj6){gap:.5rem;align-items:center;text-decoration:none;color:var(--sl-color-gray-3)}a:where(.astro-eez2twj6):hover{color:var(--sl-color-white)} .tippy-box[data-animation=fade][data-state=hidden]{opacity:0}[data-tippy-root]{max-width:calc(100vw - 10px)}.tippy-box{position:relative;background-color:#333;color:#fff;border-radius:4px;font-size:14px;line-height:1.4;white-space:normal;outline:0;transition-property:transform,visibility,opacity}.tippy-box[data-placement^=top]>.tippy-arrow{bottom:0}.tippy-box[data-placement^=top]>.tippy-arrow:before{bottom:-7px;left:0;border-width:8px 8px 0;border-top-color:initial;transform-origin:center top}.tippy-box[data-placement^=bottom]>.tippy-arrow{top:0}.tippy-box[data-placement^=bottom]>.tippy-arrow:before{top:-7px;left:0;border-width:0 8px 8px;border-bottom-color:initial;transform-origin:center bottom}.tippy-box[data-placement^=left]>.tippy-arrow{right:0}.tippy-box[data-placement^=left]>.tippy-arrow:before{border-width:8px 0 8px 8px;border-left-color:initial;right:-7px;transform-origin:center left}.tippy-box[data-placement^=right]>.tippy-arrow{left:0}.tippy-box[data-placement^=right]>.tippy-arrow:before{left:-7px;border-width:8px 8px 8px 0;border-right-color:initial;transform-origin:center right}.tippy-box[data-inertia][data-state=visible]{transition-timing-function:cubic-bezier(.54,1.5,.38,1.11)}.tippy-arrow{width:16px;height:16px;color:#333}.tippy-arrow:before{content:"";position:absolute;border-color:transparent;border-style:solid}.tippy-content{position:relative;padding:5px 9px;z-index:1} footer{flex-direction:column-reverse!important}.meta{margin-top:0!important}.pagination-links{margin-top:3rem!important}.feedback-prompt:where(.astro-fxeopwe4){h2{color:var(--sl-color-white);font-size:var(--sl-text-h5);font-weight:600;line-height:var(--sl-line-height-headings);margin-bottom:.5rem}}@media (min-width: 72rem){html[data-has-toc]{.feedback-prompt{display:none}}}.bleed:where(.astro-fxeopwe4){box-shadow:0 0 0 100vmax #001c43!important;clip-path:inset(0 -100vmax)} </style> <link rel="stylesheet" href="/_astro/markdown.BRpEnTxT.css"> <style>.pagination-links:where(.astro-u2l5gyhi){display:grid;grid-template-columns:repeat(auto-fit,minmax(min(18rem,100%),1fr));gap:1rem}a:where(.astro-u2l5gyhi){display:flex;align-items:center;justify-content:flex-start;gap:.5rem;width:100%;flex-basis:calc(50% - .5rem);flex-grow:1;border:1px solid var(--sl-color-gray-5);border-radius:.5rem;padding:1rem;text-decoration:none;color:var(--sl-color-gray-2);box-shadow:var(--sl-shadow-md);overflow-wrap:anywhere}:where(.astro-u2l5gyhi)[rel=next]{justify-content:end;text-align:end;flex-direction:row-reverse}a:where(.astro-u2l5gyhi):hover{border-color:var(--sl-color-gray-2)}.link-title:where(.astro-u2l5gyhi){color:var(--sl-color-white);font-size:var(--sl-text-2xl);line-height:var(--sl-line-height-headings)}svg:where(.astro-u2l5gyhi){flex-shrink:0} </style> <link rel="stylesheet" href="/_astro/modal.BU9zpcET.css"> <style>:root{--docsearch-primary-color: var(--sl-color-text-accent);--docsearch-text-color: var(--sl-color-text);--docsearch-spacing: 12px;--docsearch-icon-stroke-width: 1.4;--docsearch-highlight-color: var(--docsearch-primary-color);--docsearch-muted-color: var(--sl-color-gray-3);--docsearch-container-background: var(--sl-color-backdrop-overlay);--docsearch-modal-width: 560px;--docsearch-modal-height: 600px;--docsearch-modal-background: var(--sl-color-gray-6);--docsearch-modal-shadow: var(--sl-shadow-lg);--docsearch-searchbox-height: 56px;--docsearch-searchbox-background: var(--sl-color-gray-7, var(--sl-color-gray-6));--docsearch-searchbox-focus-background: var(--sl-color-black);--docsearch-searchbox-shadow: inset 0 0 0 1px var(--docsearch-primary-color);--docsearch-hit-height: 56px;--docsearch-hit-color: var(--sl-color-white);--docsearch-hit-active-color: var(--sl-color-black);--docsearch-hit-background: var(--sl-color-black);--docsearch-key-gradient: linear-gradient( var(--sl-color-bg-inline-code) 0%, var(--sl-color-bg-inline-code) 100% );--docsearch-footer-height: 44px;--docsearch-footer-background: var(--sl-color-black);--docsearch-footer-shadow: 0 -1px 0 0 var(--sl-color-hairline-light)}.DocSearch-Modal{border:1px solid var(--sl-color-hairline-light)}.DocSearch-Logo svg *{fill:var(--docsearch-muted-color)} footer:where(.astro-3yyafb3n){flex-direction:column;gap:1.5rem}.meta:where(.astro-3yyafb3n){gap:.75rem 3rem;justify-content:space-between;flex-wrap:wrap;margin-top:3rem;font-size:var(--sl-text-sm);color:var(--sl-color-gray-3)}.meta:where(.astro-3yyafb3n)>p:only-child{margin-inline-start:auto}.kudos:where(.astro-3yyafb3n){align-items:center;gap:.5em;margin:1.5rem auto;font-size:var(--sl-text-xs);text-decoration:none;color:var(--sl-color-gray-3)}.kudos:where(.astro-3yyafb3n) svg{color:var(--sl-color-orange)}.kudos:where(.astro-3yyafb3n):hover{color:var(--sl-color-white)} .hero:where(.astro-opidluyl){display:grid;align-items:center;gap:1rem;padding-bottom:1rem}.hero:where(.astro-opidluyl)>img:where(.astro-opidluyl),.hero:where(.astro-opidluyl)>.hero-html:where(.astro-opidluyl){-o-object-fit:contain;object-fit:contain;width:min(70%,20rem);height:auto;margin-inline:auto}.stack:where(.astro-opidluyl){flex-direction:column;gap:clamp(1.5rem,calc(1.5rem + 1vw),2rem);text-align:center}.copy:where(.astro-opidluyl){flex-direction:column;gap:1rem;align-items:center}a:where(.astro-opidluyl){color:var(--sl-color-white)}h1:where(.astro-opidluyl){font-size:clamp(var(--sl-text-3xl),calc(.25rem + 5vw),var(--sl-text-6xl));line-height:var(--sl-line-height-headings);font-weight:600;color:var(--sl-color-white)}.tagline:where(.astro-opidluyl){font-size:clamp(var(--sl-text-base),calc(.0625rem + 2vw),var(--sl-text-xl));color:var(--sl-color-gray-2)}.actions:where(.astro-opidluyl){gap:1rem 2rem;flex-wrap:wrap;justify-content:center}.copy:where(.astro-opidluyl)>.links:where(.astro-opidluyl){gap:0;flex-direction:row;flex-wrap:wrap}@media (min-width: 50rem){.hero:where(.astro-opidluyl){grid-template-columns:7fr 4fr;gap:3%;padding-block:clamp(2.5rem,calc(1rem + 10vmin),10rem)}.hero:where(.astro-opidluyl)>img:where(.astro-opidluyl),.hero:where(.astro-opidluyl)>.hero-html:where(.astro-opidluyl){order:2;width:min(100%,25rem)}.stack:where(.astro-opidluyl){text-align:start}.copy:where(.astro-opidluyl){align-items:flex-start}.actions:where(.astro-opidluyl){justify-content:flex-start}} .sl-markdown-content:where(.astro-cedpceuv) .heading-wrapper{--icon-size: .75em;--icon-spacing: .25em;line-height:var(--sl-line-height-headings)}.sl-markdown-content:where(.astro-cedpceuv) :not(.heading-wrapper)+:is(.heading-wrapper):not(:where(.not-content *)){margin-top:1.5em}.sl-markdown-content:where(.astro-cedpceuv) .level-h2{font-size:var(--sl-text-h2)}.sl-markdown-content:where(.astro-cedpceuv) .level-h3{font-size:var(--sl-text-h3)}.sl-markdown-content:where(.astro-cedpceuv) .level-h4{font-size:var(--sl-text-h4)}.sl-markdown-content:where(.astro-cedpceuv) .level-h5{font-size:var(--sl-text-h5)}.sl-markdown-content:where(.astro-cedpceuv) .heading-wrapper>:first-child{margin-inline-end:calc(var(--icon-size) + var(--icon-spacing));display:inline}.sl-markdown-content:where(.astro-cedpceuv) .anchor-link{margin-inline-start:calc(-1 * (var(--icon-size)));color:var(--sl-color-gray-3)}.sl-markdown-content:where(.astro-cedpceuv) .anchor-link:hover,.sl-markdown-content:where(.astro-cedpceuv) .anchor-link:focus{color:var(--sl-color-text-accent)}.sl-markdown-content:where(.astro-cedpceuv) .heading-wrapper svg{display:inline;width:var(--icon-size)}.sl-markdown-content:where(.astro-cedpceuv) .anchor-link .sr-only{-webkit-user-select:none;-moz-user-select:none;user-select:none}@media (hover: hover){.sl-markdown-content:where(.astro-cedpceuv) .anchor-link{opacity:0}}.sl-markdown-content:where(.astro-cedpceuv) .heading-wrapper:hover>.anchor-link,.sl-markdown-content:where(.astro-cedpceuv) .anchor-link:focus{opacity:1}@media (min-width: 95em){.sl-markdown-content:where(.astro-cedpceuv) .heading-wrapper{display:flex;flex-direction:row-reverse;justify-content:flex-end;gap:var(--icon-spacing);margin-inline-start:calc(-1 * (var(--icon-size) + var(--icon-spacing)))}.sl-markdown-content:where(.astro-cedpceuv) .heading-wrapper>:first-child,.sl-markdown-content:where(.astro-cedpceuv) .anchor-link{margin:0}} .page:where(.astro-vrdttmbt){flex-direction:column;min-height:100vh}.header:where(.astro-vrdttmbt){z-index:var(--sl-z-index-navbar);position:fixed;inset-inline-start:0;inset-block-start:0;width:100%;height:var(--sl-nav-height);border-bottom:1px solid var(--sl-color-hairline-shade);padding:var(--sl-nav-pad-y) var(--sl-nav-pad-x);padding-inline-end:var(--sl-nav-pad-x);background-color:var(--sl-color-bg-nav)}[data-has-sidebar] .header:where(.astro-vrdttmbt){padding-inline-end:calc(var(--sl-nav-gap) + var(--sl-nav-pad-x) + var(--sl-menu-button-size))}.sidebar-pane:where(.astro-vrdttmbt){visibility:var(--sl-sidebar-visibility, hidden);position:fixed;z-index:var(--sl-z-index-menu);inset-block:var(--sl-nav-height) 0;inset-inline-start:0;width:100%;background-color:var(--sl-color-black);overflow-y:auto}[aria-expanded=true]~.sidebar-pane:where(.astro-vrdttmbt){--sl-sidebar-visibility: visible}.sidebar-content:where(.astro-vrdttmbt){height:100%;min-height:-moz-max-content;min-height:max-content;padding:1rem var(--sl-sidebar-pad-x) 0;flex-direction:column;gap:1rem}@media (min-width: 50rem){.sidebar-content:where(.astro-vrdttmbt):after{content:"";padding-bottom:1px}}.main-frame:where(.astro-vrdttmbt){padding-top:calc(var(--sl-nav-height) + var(--sl-mobile-toc-height));padding-inline-start:var(--sl-content-inline-start)}@media (min-width: 50rem){[data-has-sidebar] .header:where(.astro-vrdttmbt){padding-inline-end:var(--sl-nav-pad-x)}.sidebar-pane:where(.astro-vrdttmbt){--sl-sidebar-visibility: visible;width:var(--sl-sidebar-width);background-color:var(--sl-color-bg-sidebar);border-inline-end:1px solid var(--sl-color-hairline-shade)}} .DocSearch-Button{display:flex;align-items:center;gap:.5rem;border:0;background-color:transparent;color:var(--sl-color-gray-1);cursor:pointer;height:2.5rem;font-size:var(--sl-text-xl)}.DocSearch-Button-Container{display:contents}.DocSearch-Search-Icon{width:.875em;height:.875em;stroke-width:.125rem}.DocSearch-Button-Placeholder,.DocSearch-Button-Keys,.DocSearch-Button-Key{display:none}@media (min-width: 50rem){sl-doc-search{width:100%}.DocSearch-Button{border:1px solid var(--sl-color-gray-5);border-radius:.5rem;padding-inline-start:.75rem;padding-inline-end:1rem;background-color:var(--sl-color-black);color:var(--sl-color-gray-2);font-size:var(--sl-text-sm);width:100%;max-width:22rem}.DocSearch-Button:hover{border-color:var(--sl-color-gray-2);color:var(--sl-color-white)}.DocSearch-Button-Placeholder,.DocSearch-Button-Keys{display:flex}.DocSearch-Button-Keys{margin-inline-start:auto}.DocSearch-Button-Keys:before{content:"";width:1em;height:1em;-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17 2H7a5 5 0 0 0-5 5v10a5 5 0 0 0 5 5h10a5 5 0 0 0 5-5V7a5 5 0 0 0-5-5Zm3 15a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3V7a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v10Z'%3E%3C/path%3E%3Cpath d='M15.293 6.707a1 1 0 1 1 1.414 1.414l-8.485 8.486a1 1 0 0 1-1.414-1.415l8.485-8.485Z'%3E%3C/path%3E%3C/svg%3E");mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17 2H7a5 5 0 0 0-5 5v10a5 5 0 0 0 5 5h10a5 5 0 0 0 5-5V7a5 5 0 0 0-5-5Zm3 15a3 3 0 0 1-3 3H7a3 3 0 0 1-3-3V7a3 3 0 0 1 3-3h10a3 3 0 0 1 3 3v10Z'%3E%3C/path%3E%3Cpath d='M15.293 6.707a1 1 0 1 1 1.414 1.414l-8.485 8.486a1 1 0 0 1-1.414-1.415l8.485-8.485Z'%3E%3C/path%3E%3C/svg%3E");-webkit-mask-size:100%;mask-size:100%;background-color:currentColor}} [data-mobile-menu-expanded]{overflow:hidden}@media (min-width: 50rem){[data-mobile-menu-expanded]{overflow:auto}} .hero:where(.astro-jbfsktt5){display:grid;align-items:center;gap:1rem;padding-bottom:1rem}.hero:where(.astro-jbfsktt5)>img:where(.astro-jbfsktt5),.hero:where(.astro-jbfsktt5)>.hero-html:where(.astro-jbfsktt5){-o-object-fit:contain;object-fit:contain;width:min(70%,20rem);height:auto;margin-inline:auto}.stack:where(.astro-jbfsktt5){flex-direction:column;gap:clamp(1.5rem,calc(1.5rem + 1vw),2rem);text-align:center}.copy:where(.astro-jbfsktt5){flex-direction:column;gap:1rem;align-items:center}.copy:where(.astro-jbfsktt5)>:where(.astro-jbfsktt5){max-width:50ch}h1:where(.astro-jbfsktt5){font-size:clamp(var(--sl-text-3xl),calc(.25rem + 5vw),var(--sl-text-6xl));line-height:var(--sl-line-height-headings);font-weight:600;color:var(--sl-color-white)}.tagline:where(.astro-jbfsktt5){font-size:clamp(var(--sl-text-base),calc(.0625rem + 2vw),var(--sl-text-xl));color:var(--sl-color-gray-2)}.actions:where(.astro-jbfsktt5){gap:1rem 2rem;flex-wrap:wrap;justify-content:center}@media (min-width: 50rem){.hero:where(.astro-jbfsktt5){grid-template-columns:7fr 4fr;gap:3%;padding-block:clamp(2.5rem,calc(1rem + 10vmin),10rem)}.hero:where(.astro-jbfsktt5)>img:where(.astro-jbfsktt5),.hero:where(.astro-jbfsktt5)>.hero-html:where(.astro-jbfsktt5){order:2;width:min(100%,25rem)}.stack:where(.astro-jbfsktt5){text-align:start}.copy:where(.astro-jbfsktt5){align-items:flex-start}.actions:where(.astro-jbfsktt5){justify-content:flex-start}} dialog:where(.astro-vjux6bgf){background:transparent;border:0;height:100vh;height:100dvh;margin:0;max-height:none;max-width:none;overflow:hidden;padding:0;position:fixed;width:100vw;width:100dvw}dialog:where(.astro-vjux6bgf)::backdrop{background:var(--starlight-image-zoom-backdrop-bg, var(--sl-color-black));opacity:0}.starlight-image-zoom-opened dialog:where(.astro-vjux6bgf)::backdrop{opacity:1}figure:where(.astro-vjux6bgf){cursor:zoom-out;height:100%;position:relative;width:100%}figure:where(.astro-vjux6bgf) figcaption{background-color:color-mix(in srgb,var(--sl-color-bg-nav),transparent 10%);border-top:1px solid var(--sl-color-hairline);cursor:initial;inset:auto 0 0;opacity:0;padding:var(--sl-nav-pad-y) var(--sl-nav-pad-x);position:absolute}@media (prefers-reduced-transparency){figure:where(.astro-vjux6bgf) figcaption{background-color:var(--sl-color-bg-nav)}}.starlight-image-zoom-opened figure:where(.astro-vjux6bgf) figcaption{opacity:1}button:where(.astro-vjux6bgf){cursor:zoom-out;opacity:0;z-index:1}.starlight-image-zoom-opened button:where(.astro-vjux6bgf){opacity:1}@media (prefers-reduced-motion: no-preference){button:where(.astro-vjux6bgf),dialog:where(.astro-vjux6bgf)::backdrop,figure:where(.astro-vjux6bgf) figcaption{transition:opacity var(--starlight-image-zoom-animation-duration)}} button:where(.astro-jif73yzw){position:fixed;top:calc((var(--sl-nav-height) - var(--sl-menu-button-size)) / 2);inset-inline-end:var(--sl-nav-pad-x);z-index:var(--sl-z-index-navbar);border:0;border-radius:50%;width:var(--sl-menu-button-size);height:var(--sl-menu-button-size);padding:.5rem;background-color:var(--sl-color-white);color:var(--sl-color-black);box-shadow:var(--sl-shadow-md);cursor:pointer}:where(.astro-jif73yzw)[aria-expanded=true] button:where(.astro-jif73yzw){background-color:var(--sl-color-gray-2);box-shadow:none}[data-theme=light] button:where(.astro-jif73yzw){background-color:var(--sl-color-black);color:var(--sl-color-white)}[data-theme=light] :where(.astro-jif73yzw)[aria-expanded=true] button:where(.astro-jif73yzw){background-color:var(--sl-color-gray-5)} .site-title:where(.astro-m46x6ez3){align-items:center;gap:var(--sl-nav-gap);font-size:var(--sl-text-h4);font-weight:600;color:var(--sl-color-text-accent);text-decoration:none;white-space:nowrap}img:where(.astro-m46x6ez3){height:calc(var(--sl-nav-height) - 2 * var(--sl-nav-pad-y));width:auto;max-width:100%;-o-object-fit:contain;object-fit:contain;-o-object-position:0 50%;object-position:0 50%} :root{.social-icons{--sl-icon-color: var(--sl-color-text)}} :root{--starlight-image-zoom-animation-duration: .3s}starlight-image-zoom-zoomable{display:inline-block;position:relative;width:100%}starlight-image-zoom-zoomable img{cursor:zoom-in}starlight-image-zoom-zoomable button{cursor:zoom-in}starlight-image-zoom-zoomable button:not(:focus):not(:focus-within){border:none;clip:rect(0,0,0,0);height:1px;margin:-1px;overflow:hidden;padding:0;white-space:nowrap;width:1px}.starlight-image-zoom-control{background-color:var(--sl-color-bg-nav);border:2px solid var(--sl-color-gray-2);border-radius:50%;display:grid;height:44px;inset:20px auto auto 20px;margin-top:0!important;padding:10px;place-items:center;position:absolute;width:44px}:is(.starlight-image-zoom-opened,.starlight-image-zoom-transition) .starlight-image-zoom-control{inset:20px 20px auto auto}.starlight-image-zoom-source{visibility:hidden}.starlight-image-zoom-image{cursor:zoom-out}@media (prefers-reduced-motion: no-preference){.starlight-image-zoom-image{transition:transform var(--starlight-image-zoom-animation-duration) cubic-bezier(.4,0,.2,1)}} .header:where(.astro-kmkmnagf){gap:var(--sl-nav-gap);justify-content:space-between;align-items:center;height:100%}.title-wrapper:where(.astro-kmkmnagf){overflow:clip;padding:.25rem;margin:-.25rem;min-width:0}.right-group:where(.astro-kmkmnagf),.social-icons:where(.astro-kmkmnagf){gap:1rem;align-items:center}.social-icons:where(.astro-kmkmnagf):after{content:"";height:2rem;border-inline-end:1px solid var(--sl-color-gray-5)}@media (min-width: 50rem){:root[data-has-sidebar]{--__sidebar-pad: calc(2 * var(--sl-nav-pad-x))}:root:not([data-has-toc]){--__toc-width: 0rem}.header:where(.astro-kmkmnagf){--__sidebar-width: max(0rem, var(--sl-content-inline-start, 0rem) - var(--sl-nav-pad-x));--__main-column-fr: calc( ( 100% + var(--__sidebar-pad, 0rem) - var(--__toc-width, var(--sl-sidebar-width)) - (2 * var(--__toc-width, var(--sl-nav-pad-x))) - var(--sl-content-inline-start, 0rem) - var(--sl-content-width) ) / 2 );display:grid;grid-template-columns:minmax(calc(var(--__sidebar-width) + max(0rem,var(--__main-column-fr) - var(--sl-nav-gap))),auto) 1fr auto;align-content:center}} .right-sidebar-panel:where(.astro-pb3aqygn){padding:1rem var(--sl-sidebar-pad-x)}.sl-container:where(.astro-pb3aqygn){width:calc(var(--sl-sidebar-width) - 2 * var(--sl-sidebar-pad-x))}.right-sidebar-panel:where(.astro-pb3aqygn) h2{color:var(--sl-color-white);font-size:var(--sl-text-h5);font-weight:600;line-height:var(--sl-line-height-headings);margin-bottom:.5rem}.right-sidebar-panel:where(.astro-pb3aqygn) :where(a){display:block;font-size:var(--sl-text-xs);text-decoration:none;color:var(--sl-color-gray-3);overflow-wrap:anywhere}.right-sidebar-panel:where(.astro-pb3aqygn) :where(a):hover{color:var(--sl-color-white)}@media (min-width: 72rem){.sl-container:where(.astro-pb3aqygn){max-width:calc(((100vw - var(--sl-sidebar-width) - 2 * var(--sl-content-pad-x) - 2 * var(--sl-sidebar-pad-x)) * .25))}} :root{--sl-badge-default-border: var(--sl-color-accent);--sl-badge-default-bg: var(--sl-color-accent-low);--sl-badge-default-text: #fff;--sl-badge-note-border: var(--sl-color-blue);--sl-badge-note-bg: var(--sl-color-blue-low);--sl-badge-note-text: #fff;--sl-badge-danger-border: var(--sl-color-red);--sl-badge-danger-bg: var(--sl-color-red-low);--sl-badge-danger-text: #fff;--sl-badge-success-border: var(--sl-color-green);--sl-badge-success-bg: var(--sl-color-green-low);--sl-badge-success-text: #fff;--sl-badge-caution-border: var(--sl-color-orange);--sl-badge-caution-bg: var(--sl-color-orange-low);--sl-badge-caution-text: #fff;--sl-badge-tip-border: var(--sl-color-purple);--sl-badge-tip-bg: var(--sl-color-purple-low);--sl-badge-tip-text: #fff}[data-theme=light]:root{--sl-badge-default-bg: var(--sl-color-accent-high);--sl-badge-note-bg: var(--sl-color-blue-high);--sl-badge-danger-bg: var(--sl-color-red-high);--sl-badge-success-bg: var(--sl-color-green-high);--sl-badge-caution-bg: var(--sl-color-orange-high);--sl-badge-tip-bg: var(--sl-color-purple-high)}.sl-badge:where(.astro-avdet4wd){display:inline-block;border:1px solid var(--sl-color-border-badge);border-radius:.25rem;font-family:var(--sl-font-system-mono);line-height:normal;color:var(--sl-color-text-badge);background-color:var(--sl-color-bg-badge);overflow-wrap:anywhere}.sidebar-content .sl-badge:where(.astro-avdet4wd){line-height:1;font-size:var(--sl-text-xs);padding:.125rem .375rem}.sidebar-content a[aria-current=page]>.sl-badge:where(.astro-avdet4wd){--sl-color-bg-badge: transparent;--sl-color-border-badge: currentColor;color:inherit}.default:where(.astro-avdet4wd){--sl-color-bg-badge: var(--sl-badge-default-bg);--sl-color-border-badge: var(--sl-badge-default-border);--sl-color-text-badge: var(--sl-badge-default-text)}.note:where(.astro-avdet4wd){--sl-color-bg-badge: var(--sl-badge-note-bg);--sl-color-border-badge: var(--sl-badge-note-border);--sl-color-text-badge: var(--sl-badge-note-text)}.danger:where(.astro-avdet4wd){--sl-color-bg-badge: var(--sl-badge-danger-bg);--sl-color-border-badge: var(--sl-badge-danger-border);--sl-color-text-badge: var(--sl-badge-danger-text)}.success:where(.astro-avdet4wd){--sl-color-bg-badge: var(--sl-badge-success-bg);--sl-color-border-badge: var(--sl-badge-success-border);--sl-color-text-badge: var(--sl-badge-success-text)}.tip:where(.astro-avdet4wd){--sl-color-bg-badge: var(--sl-badge-tip-bg);--sl-color-border-badge: var(--sl-badge-tip-border);--sl-color-text-badge: var(--sl-badge-tip-text)}.caution:where(.astro-avdet4wd){--sl-color-bg-badge: var(--sl-badge-caution-bg);--sl-color-border-badge: var(--sl-badge-caution-border);--sl-color-text-badge: var(--sl-badge-caution-text)}.small:where(.astro-avdet4wd){font-size:var(--sl-text-xs);padding:.125rem .25rem}.medium:where(.astro-avdet4wd){font-size:var(--sl-text-sm);padding:.175rem .35rem}.large:where(.astro-avdet4wd){font-size:var(--sl-text-base);padding:.225rem .45rem}.sl-markdown-content :is(h1,h2,h3,h4,h5,h6) .sl-badge:where(.astro-avdet4wd){vertical-align:middle} .card-grid:where(.astro-zntqmydn){display:grid;grid-template-columns:100%;gap:1rem}.card-grid:where(.astro-zntqmydn)>*{margin-top:0!important}@media (min-width: 50rem){.card-grid:where(.astro-zntqmydn){grid-template-columns:1fr 1fr;gap:1.5rem}.stagger:where(.astro-zntqmydn){--stagger-height: 5rem;padding-bottom:var(--stagger-height)}.stagger:where(.astro-zntqmydn)>*:nth-child(2n){transform:translateY(var(--stagger-height))}} .card:where(.astro-v5tidmuc){--sl-card-border: var(--sl-color-purple);--sl-card-bg: var(--sl-color-purple-low);border:1px solid var(--sl-color-gray-5);background-color:var(--sl-color-black);padding:clamp(1rem,calc(.125rem + 3vw),2.5rem);flex-direction:column;gap:clamp(.5rem,calc(.125rem + 1vw),1rem)}.card:where(.astro-v5tidmuc):nth-child(4n+1){--sl-card-border: var(--sl-color-orange);--sl-card-bg: var(--sl-color-orange-low)}.card:where(.astro-v5tidmuc):nth-child(4n+3){--sl-card-border: var(--sl-color-green);--sl-card-bg: var(--sl-color-green-low)}.card:where(.astro-v5tidmuc):nth-child(4n+4){--sl-card-border: var(--sl-color-red);--sl-card-bg: var(--sl-color-red-low)}.card:where(.astro-v5tidmuc):nth-child(4n+5){--sl-card-border: var(--sl-color-blue);--sl-card-bg: var(--sl-color-blue-low)}.title:where(.astro-v5tidmuc){font-weight:600;font-size:var(--sl-text-h4);color:var(--sl-color-white);line-height:var(--sl-line-height-headings);gap:1rem;align-items:center}.card:where(.astro-v5tidmuc) .icon:where(.astro-v5tidmuc){border:1px solid var(--sl-card-border);background-color:var(--sl-card-bg);padding:.2em;border-radius:.25rem}.card:where(.astro-v5tidmuc) .body:where(.astro-v5tidmuc){margin:0;font-size:clamp(var(--sl-text-sm),calc(.5rem + 1vw),var(--sl-text-body))} label:where(.astro-4yphtoen){--sl-label-icon-size: .875rem;--sl-caret-size: 1.25rem;--sl-inline-padding: .5rem;position:relative;display:flex;align-items:center;gap:.25rem;color:var(--sl-color-gray-1)}label:where(.astro-4yphtoen):hover{color:var(--sl-color-gray-2)}.icon:where(.astro-4yphtoen){position:absolute;top:50%;transform:translateY(-50%);pointer-events:none}.label-icon:where(.astro-4yphtoen){font-size:var(--sl-label-icon-size);inset-inline-start:0}.caret:where(.astro-4yphtoen){font-size:var(--sl-caret-size);inset-inline-end:0}select:where(.astro-4yphtoen){border:0;padding-block:.625rem;padding-inline:calc(var(--sl-label-icon-size) + var(--sl-inline-padding) + .25rem) calc(var(--sl-caret-size) + var(--sl-inline-padding) + .25rem);margin-inline:calc(var(--sl-inline-padding) * -1);width:calc(var(--sl-select-width) + var(--sl-inline-padding) * 2);background-color:transparent;text-overflow:ellipsis;color:inherit;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none}option:where(.astro-4yphtoen){background-color:var(--sl-color-bg-nav);color:var(--sl-color-gray-1)}@media (min-width: 50rem){select:where(.astro-4yphtoen){font-size:var(--sl-text-sm)}} ul:where(.astro-g2bywc46){padding:0;list-style:none}a:where(.astro-g2bywc46){--pad-inline: .5rem;display:block;border-radius:.25rem;padding-block:.25rem;padding-inline:calc(1rem * var(--depth) + var(--pad-inline)) var(--pad-inline);line-height:1.25}a:where(.astro-g2bywc46)[aria-current=true]{color:var(--sl-color-text-accent)}.isMobile:where(.astro-g2bywc46) a:where(.astro-g2bywc46){--pad-inline: 1rem;display:flex;justify-content:space-between;gap:var(--pad-inline);border-top:1px solid var(--sl-color-gray-6);border-radius:0;padding-block:.5rem;color:var(--sl-color-text);font-size:var(--sl-text-sm);text-decoration:none;outline-offset:var(--sl-outline-offset-inside)}.isMobile:where(.astro-g2bywc46):first-child>li:where(.astro-g2bywc46):first-child>a:where(.astro-g2bywc46){border-top:0}.isMobile:where(.astro-g2bywc46) a:where(.astro-g2bywc46)[aria-current=true],.isMobile:where(.astro-g2bywc46) a:where(.astro-g2bywc46)[aria-current=true]:hover,.isMobile:where(.astro-g2bywc46) a:where(.astro-g2bywc46)[aria-current=true]:focus{color:var(--sl-color-white);background-color:unset}.isMobile:where(.astro-g2bywc46) a:where(.astro-g2bywc46)[aria-current=true]:after{content:"";width:1rem;background-color:var(--sl-color-text-accent);-webkit-mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNCAxNCc+PHBhdGggZD0nTTEwLjkxNCA0LjIwNmEuNTgzLjU4MyAwIDAgMC0uODI4IDBMNS43NCA4LjU1NyAzLjkxNCA2LjcyNmEuNTk2LjU5NiAwIDAgMC0uODI4Ljg1N2wyLjI0IDIuMjRhLjU4My41ODMgMCAwIDAgLjgyOCAwbDQuNzYtNC43NmEuNTgzLjU4MyAwIDAgMCAwLS44NTdaJy8+PC9zdmc+Cg==);mask-image:url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmcnIHZpZXdCb3g9JzAgMCAxNCAxNCc+PHBhdGggZD0nTTEwLjkxNCA0LjIwNmEuNTgzLjU4MyAwIDAgMC0uODI4IDBMNS43NCA4LjU1NyAzLjkxNCA2LjcyNmEuNTk2LjU5NiAwIDAgMC0uODI4Ljg1N2wyLjI0IDIuMjRhLjU4My41ODMgMCAwIDAgLjgyOCAwbDQuNzYtNC43NmEuNTgzLjU4MyAwIDAgMCAwLS44NTdaJy8+PC9zdmc+Cg==);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;flex-shrink:0} nav:where(.astro-doynk5tl){position:fixed;z-index:var(--sl-z-index-toc);top:calc(var(--sl-nav-height) - 1px);inset-inline:0;border-top:1px solid var(--sl-color-gray-5);background-color:var(--sl-color-bg-nav)}@media (min-width: 50rem){nav:where(.astro-doynk5tl){inset-inline-start:var(--sl-content-inline-start, 0)}}summary:where(.astro-doynk5tl){gap:.5rem;align-items:center;height:var(--sl-mobile-toc-height);border-bottom:1px solid var(--sl-color-hairline-shade);padding:.5rem 1rem;font-size:var(--sl-text-xs);outline-offset:var(--sl-outline-offset-inside)}summary:where(.astro-doynk5tl)::marker,summary:where(.astro-doynk5tl)::-webkit-details-marker{display:none}.toggle:where(.astro-doynk5tl){flex-shrink:0;gap:1rem;align-items:center;justify-content:space-between;border:1px solid var(--sl-color-gray-5);border-radius:.5rem;padding-block:.5rem;padding-inline-start:.75rem;padding-inline-end:.5rem;line-height:1;background-color:var(--sl-color-black);-webkit-user-select:none;-moz-user-select:none;user-select:none;cursor:pointer}details:where(.astro-doynk5tl)[open] .toggle:where(.astro-doynk5tl){color:var(--sl-color-white);border-color:var(--sl-color-accent)}details:where(.astro-doynk5tl) .toggle:where(.astro-doynk5tl):hover{color:var(--sl-color-white);border-color:var(--sl-color-gray-2)}[dir=rtl] .caret:where(.astro-doynk5tl){transform:rotate(180deg)}details:where(.astro-doynk5tl)[open] .caret:where(.astro-doynk5tl){transform:rotate(90deg)}.display-current:where(.astro-doynk5tl){white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:var(--sl-color-white)}.dropdown:where(.astro-doynk5tl){--border-top: 1px;margin-top:calc(-1 * var(--border-top));border:var(--border-top) solid var(--sl-color-gray-6);border-top-color:var(--sl-color-hairline-shade);max-height:calc(85vh - var(--sl-nav-height) - var(--sl-mobile-toc-height));overflow-y:auto;background-color:var(--sl-color-black);box-shadow:var(--sl-shadow-md);overscroll-behavior:contain} h1:where(.astro-j6tvhyss){margin-top:1rem;font-size:var(--sl-text-h1);line-height:var(--sl-line-height-headings);font-weight:600;color:var(--sl-color-white)} a:where(.astro-wy4te6ga){color:var(--sl-color-text-accent);padding:.5em;margin:-.5em}a:where(.astro-wy4te6ga):hover{opacity:.66} a:where(.astro-7q3lir66){clip:rect(0,0,0,0);position:fixed;top:.75rem;inset-inline-start:.75rem}a:where(.astro-7q3lir66):focus{clip:unset;z-index:var(--sl-z-index-skiplink);display:block;padding:.5rem 1rem;text-decoration:none;color:var(--sl-color-text-invert);background-color:var(--sl-color-text-accent);box-shadow:var(--sl-shadow-lg)} .c-breadcrumbs{--color-link-breadcrumbs: inherit;--size-font-breadcrumbs: 1rem;--spacing-vertical-separator-breadcrumbs: 6px}.c-breadcrumbs .has-ellipsis{display:var(--display-ellipsis-breadcrumbs, none)}.c-breadcrumbs.is-truncated .has-ellipsis{--display-ellipsis-breadcrumbs: flex}.c-breadcrumbs.is-truncated .c-breadcrumbs__crumb{visibility:var(--visibility-truncated-breadcrumbs, hidden);position:var(--position-truncated-breadcrumbs, absolute)}.c-breadcrumbs.is-truncated .c-breadcrumbs__crumb:first-of-type,.c-breadcrumbs.is-truncated .c-breadcrumbs__crumb:last-of-type,.c-breadcrumbs.is-truncated .c-breadcrumbs__crumb.has-ellipsis{--visibility-truncated-breadcrumbs: visible;--position-truncated-breadcrumbs: relative}.c-breadcrumbs__truncated-button{background-color:transparent;border:none;padding:0;margin:0;cursor:pointer;color:var(--color-truncated-button, var(--color-link-breadcrumbs))}.c-breadcrumbs__crumbs{list-style-type:none;margin:0;padding:0;display:flex;flex-wrap:wrap}.c-breadcrumbs__crumbs:where(.has-no-separators){row-gap:var(--spacing-vertical-separator-breadcrumbs);-moz-column-gap:1rem;column-gap:1rem}.c-breadcrumbs__crumb{display:flex;align-items:center}.c-breadcrumbs__crumb:has(.c-breadcrumbs__separator) .c-breadcrumbs__separator{display:flex;align-items:center;justify-content:center;margin-inline:var(--spacing-vertical-separator-breadcrumbs)}.c-breadcrumbs__crumb:has(svg,image) :where(svg,image){max-width:var(--size-font-breadcrumbs);max-height:var(--size-font-breadcrumbs)}.c-breadcrumbs__link,.c-breadcrumbs__truncated-button{font-size:var(--size-font-breadcrumbs);text-decoration:none;color:var(--color-link-breadcrumbs);line-height:1} svg:where(.astro-c6vsoqas){color:var(--sl-icon-color);font-size:var(--sl-icon-size, 1em);width:1em;height:1em} :root{.sidebar-content{--sl-color-hairline-light: #cacaca !important;>*{a{padding:.2375em var(--sl-sidebar-item-padding-inline)!important;&[aria-current=page]{background-color:unset!important;border:unset!important;border-color:unset!important;color:var(--sl-color-accent)!important;font-weight:600!important}}summary{padding:.1375em var(--sl-sidebar-item-padding-inline)!important}.large{color:var(--sl-color-gray-2)!important;font-weight:unset!important;font-size:unset!important;@media (min-width: 50rem){font-size:var(--sl-text-sm)!important}}.caret{font-size:1rem!important}}}}:root[data-theme=dark]{.sidebar-content{--sl-color-hairline-light: #444444 !important;>* a[aria-current=page]{color:var(--sl-color-accent-high)!important}}} .main-pane:where(.astro-67yu43on){isolation:isolate}@media (min-width: 72rem){.right-sidebar-container:where(.astro-67yu43on){order:2;position:relative;width:calc(var(--sl-sidebar-width) + (100% - var(--sl-content-width) - var(--sl-sidebar-width)) / 2)}.right-sidebar:where(.astro-67yu43on){position:fixed;top:0;border-inline-start:1px solid var(--sl-color-hairline);padding-top:var(--sl-nav-height);width:100%;height:100vh;overflow-y:auto;scrollbar-width:none}.main-pane:where(.astro-67yu43on){width:100%}[data-has-sidebar][data-has-toc] .main-pane:where(.astro-67yu43on){--sl-content-margin-inline: auto 0;order:1;width:calc(var(--sl-content-width) + (100% - var(--sl-content-width) - var(--sl-sidebar-width)) / 2)}} .starlight-aside{padding:1rem;border-inline-start:.25rem solid var(--sl-color-asides-border);color:var(--sl-color-white)}.starlight-aside--note{--sl-color-asides-text-accent: var(--sl-color-blue-high);--sl-color-asides-border: var(--sl-color-blue);background-color:var(--sl-color-blue-low)}.starlight-aside--tip{--sl-color-asides-text-accent: var(--sl-color-purple-high);--sl-color-asides-border: var(--sl-color-purple);background-color:var(--sl-color-purple-low)}.starlight-aside--caution{--sl-color-asides-text-accent: var(--sl-color-orange-high);--sl-color-asides-border: var(--sl-color-orange);background-color:var(--sl-color-orange-low)}.starlight-aside--danger{--sl-color-asides-text-accent: var(--sl-color-red-high);--sl-color-asides-border: var(--sl-color-red);background-color:var(--sl-color-red-low)}.starlight-aside__title{display:flex;gap:.5rem;align-items:center;font-size:var(--sl-text-h5);font-weight:600;line-height:var(--sl-line-height-headings);color:var(--sl-color-asides-text-accent)}.starlight-aside__icon{font-size:1.333em;width:1em;height:1em}.starlight-aside__title+.starlight-aside__content{margin-top:.5rem}.starlight-aside__content a{color:var(--sl-color-asides-text-accent)} sl-sidebar-state-persist:where(.astro-kku4brbg){display:contents} .starlight-aside{border:unset;border-radius:4px;&.starlight-aside--note{background-color:#ecf4ff}&.starlight-aside--caution{background-color:#fff8e4}.starlight-aside__title{margin-left:30px;svg{margin-left:-30px}}.starlight-aside__content{margin-top:unset;margin-left:30px}}:root[data-theme=dark]{.starlight-aside--note{background-color:#001c43}.starlight-aside--caution{background-color:#62490a}} .social-icons:where(.astro-wu23bvmt){margin-inline-end:auto;gap:1rem;align-items:center;padding-block:1rem}.social-icons:where(.astro-wu23bvmt):empty{display:none}.mobile-preferences:where(.astro-wu23bvmt){justify-content:space-between;flex-wrap:wrap;border-top:1px solid var(--sl-color-gray-6);-moz-column-gap:1rem;column-gap:1rem;padding:.5rem 0} starlight-tabs:where(.astro-esqgolmp){display:block}.tablist-wrapper:where(.astro-esqgolmp){overflow-x:auto}:where(.astro-esqgolmp)[role=tablist]{display:flex;list-style:none;border-bottom:2px solid var(--sl-color-gray-5);padding:0}.tab:where(.astro-esqgolmp){margin-bottom:-2px}.tab:where(.astro-esqgolmp)>:where(.astro-esqgolmp)[role=tab]{display:flex;align-items:center;gap:.5rem;padding:0 1.25rem;text-decoration:none;border-bottom:2px solid var(--sl-color-gray-5);color:var(--sl-color-gray-3);outline-offset:var(--sl-outline-offset-inside);overflow-wrap:initial}.tab:where(.astro-esqgolmp) :where(.astro-esqgolmp)[role=tab][aria-selected=true]{color:var(--sl-color-white);border-color:var(--sl-color-text-accent);font-weight:600}.tablist-wrapper:where(.astro-esqgolmp)~[role=tabpanel]{margin-top:1rem} .sl-badge{border:none;font-family:var(--__sl-font);overflow-wrap:unset;align-items:center;border-radius:50px;display:inline-flex;font-size:12px;font-weight:400;line-height:1;-webkit-user-select:none;-moz-user-select:none;user-select:none;white-space:nowrap;padding:4px 8px}:root{.sl-badge{&.note{background-color:#b9d6ff!important;color:#003681!important}&.danger{background-color:#feccc8!important;color:#780a02!important}&.success{background-color:#a8e9c0!important;color:#104122!important}&.caution{background-color:#fbcda5!important;color:#592b04!important}&.tip{background-color:#ebcaf6!important;color:#490f5c!important}&.default{background-color:#f2f2f2!important;color:#3d3d3d!important}}}:root[data-theme=dark]{.sl-badge{&.note{background-color:#82b6ff!important;color:#001c43!important}&.danger{background-color:#feccc8!important;color:#3c0501!important}&.success{background-color:#55d584!important;color:#0a2614!important}&.caution{background-color:#fbcda5!important;color:#361a02!important}&.tip{background-color:#ebcaf6!important;color:#350b42!important}&.default{background-color:#d9d9d9!important;color:#4a4a4a!important}}} .sl-link-card:where(.astro-mf7fz2mj){display:grid;grid-template-columns:1fr auto;gap:.5rem;border:1px solid var(--sl-color-gray-5);border-radius:.5rem;padding:1rem;box-shadow:var(--sl-shadow-sm);position:relative}a:where(.astro-mf7fz2mj){text-decoration:none;line-height:var(--sl-line-height-headings)}a:where(.astro-mf7fz2mj):before{content:"";position:absolute;inset:0}.stack:where(.astro-mf7fz2mj){flex-direction:column;gap:.5rem}.title:where(.astro-mf7fz2mj){color:var(--sl-color-white);font-weight:600;font-size:var(--sl-text-lg)}.description:where(.astro-mf7fz2mj){color:var(--sl-color-gray-3);line-height:1.5}.icon:where(.astro-mf7fz2mj){color:var(--sl-color-gray-3)}.sl-link-card:where(.astro-mf7fz2mj):hover{background:var(--sl-color-gray-7, var(--sl-color-gray-6));border-color:var(--sl-color-gray-2)}.sl-link-card:where(.astro-mf7fz2mj):hover .icon:where(.astro-mf7fz2mj){color:var(--sl-color-white)} a:where(.astro-vdgantbb){color:var(--sl-color-text-accent)} .expressive-code .copy button{width:2rem!important;height:2rem!important} html:not([data-has-toc]){--sl-mobile-toc-height: 0rem}html:not([data-has-sidebar]){--sl-content-width: 67.5rem}html{scroll-padding-top:calc(1.5rem + var(--sl-nav-height) + var(--sl-mobile-toc-height))}main:where(.astro-bguv2lll){padding-bottom:3vh}@media (min-width: 50em){:where(.astro-bguv2lll)[data-has-sidebar]{--sl-content-inline-start: var(--sl-sidebar-width)}}@media (min-width: 72em){html{scroll-padding-top:calc(1.5rem + var(--sl-nav-height))}} .sl-steps{--bullet-size: calc(var(--sl-line-height) * 1rem);--bullet-margin: .375rem;list-style:none;counter-reset:steps-counter var(--sl-steps-start, 0);padding-inline-start:0}.sl-steps>li{counter-increment:steps-counter;position:relative;padding-inline-start:calc(var(--bullet-size) + 1rem);padding-bottom:1px;min-height:calc(var(--bullet-size) + var(--bullet-margin))}.sl-steps>li+li{margin-top:0}.sl-steps>li:before{content:counter(steps-counter);position:absolute;top:0;inset-inline-start:0;width:var(--bullet-size);height:var(--bullet-size);line-height:var(--bullet-size);font-size:var(--sl-text-xs);font-weight:600;text-align:center;color:var(--sl-color-white);background-color:var(--sl-color-gray-6);border-radius:99rem;box-shadow:inset 0 0 0 1px var(--sl-color-gray-5)}.sl-steps>li:after{--guide-width: 1px;content:"";position:absolute;top:calc(var(--bullet-size) + var(--bullet-margin));bottom:var(--bullet-margin);inset-inline-start:calc((var(--bullet-size) - var(--guide-width)) / 2);width:var(--guide-width);background-color:var(--sl-color-hairline-light)}.sl-steps>li>:first-child{--lh: calc(1em * var(--sl-line-height));--shift-y: calc(.5 * (var(--bullet-size) - var(--lh)));transform:translateY(var(--shift-y));margin-bottom:var(--shift-y)}.sl-steps>li>:first-child:where(h1,h2,h3,h4,h5,h6){--lh: calc(1em * var(--sl-line-height-headings))}@supports (--prop: 1lh){.sl-steps>li>:first-child{--lh: 1lh}} :root{--color-link-breadcrumbs: var(--sl-color-text-accent)} .footnote{font-size:.75rem;line-height:1rem;color:var(--sl-color-accent);font-weight:600;padding:.25rem;margin:-.25rem}.data-footnote-backref{display:none}.tippy-box{background-color:var(--sl-color-bg-nav);border-color:var(--sl-color-text);border:.1em solid;color:var(--sl-color-white)} starlight-file-tree:where(.astro-p67cqifm){--x-space: 1.5rem;--y-space: .125rem;--y-pad: 0;display:block;border:1px solid var(--sl-color-gray-5);padding:1rem;background-color:var(--sl-color-gray-6);font-size:var(--sl-text-xs);font-family:var(--__sl-font-mono);overflow-x:auto}starlight-file-tree:where(.astro-p67cqifm) .directory>details{border:0;padding:0;padding-inline-start:var(--x-space);background:transparent}starlight-file-tree:where(.astro-p67cqifm) .directory>details>summary{margin-inline-start:calc(-1 * var(--x-space));border:0;padding:var(--y-pad) .625rem;font-weight:400;color:var(--sl-color-white);max-width:100%}starlight-file-tree:where(.astro-p67cqifm) .directory>details>summary::marker,starlight-file-tree:where(.astro-p67cqifm) .directory>details>summary::-webkit-details-marker{color:var(--sl-color-gray-3)}starlight-file-tree:where(.astro-p67cqifm) .directory>details>summary:hover,starlight-file-tree:where(.astro-p67cqifm) .directory>details>summary:hover .tree-icon{cursor:pointer;color:var(--sl-color-text-accent);fill:currentColor}starlight-file-tree:where(.astro-p67cqifm) .directory>details>summary:hover~ul{border-color:var(--sl-color-gray-4)}starlight-file-tree:where(.astro-p67cqifm) .directory>details>summary:hover .highlight .tree-icon{fill:currentColor}starlight-file-tree:where(.astro-p67cqifm) ul{margin-inline-start:.5rem;border-inline-start:1px solid var(--sl-color-gray-5);padding:0;padding-inline-start:.125rem;list-style:none}starlight-file-tree:where(.astro-p67cqifm)>ul{margin:0;border:0;padding:0}starlight-file-tree:where(.astro-p67cqifm) li{margin:var(--y-space) 0;padding:var(--y-pad) 0}starlight-file-tree:where(.astro-p67cqifm) .file{margin-inline-start:calc(var(--x-space) - .125rem);color:var(--sl-color-white)}starlight-file-tree:where(.astro-p67cqifm) .tree-entry{display:inline-flex;align-items:flex-start;flex-wrap:wrap;max-width:calc(100% - 1rem)}@media (min-width: 30em){starlight-file-tree:where(.astro-p67cqifm) .tree-entry{flex-wrap:nowrap}}starlight-file-tree:where(.astro-p67cqifm) .tree-entry>:first-child{flex-shrink:0}starlight-file-tree:where(.astro-p67cqifm) .empty{color:var(--sl-color-gray-3);padding-inline-start:.375rem}starlight-file-tree:where(.astro-p67cqifm) .comment{color:var(--sl-color-gray-3);padding-inline-start:1.625rem;max-width:24rem;min-width:12rem}starlight-file-tree:where(.astro-p67cqifm) .highlight{display:inline-block;border-radius:.25rem;padding-inline-end:.5rem;color:var(--sl-color-text-invert);background-color:var(--sl-color-text-accent)}starlight-file-tree:where(.astro-p67cqifm) svg{display:inline;fill:var(--sl-color-gray-3);vertical-align:middle;margin-inline:.25rem .375rem;width:.875rem;height:.875rem}starlight-file-tree:where(.astro-p67cqifm) .highlight svg.tree-icon{fill:currentColor} ul:where(.astro-3ii7xxms){--sl-sidebar-item-padding-inline: .5rem;list-style:none;padding:0}li:where(.astro-3ii7xxms){overflow-wrap:anywhere}ul:where(.astro-3ii7xxms) ul:where(.astro-3ii7xxms) li:where(.astro-3ii7xxms){margin-inline-start:var(--sl-sidebar-item-padding-inline);border-inline-start:1px solid var(--sl-color-hairline-light);padding-inline-start:var(--sl-sidebar-item-padding-inline)}.large:where(.astro-3ii7xxms){font-size:var(--sl-text-lg);font-weight:600;color:var(--sl-color-white)}.top-level:where(.astro-3ii7xxms)>li:where(.astro-3ii7xxms)+li:where(.astro-3ii7xxms){margin-top:.75rem}summary:where(.astro-3ii7xxms){display:flex;align-items:center;justify-content:space-between;padding:.2em var(--sl-sidebar-item-padding-inline);line-height:1.4;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}summary:where(.astro-3ii7xxms)::marker,summary:where(.astro-3ii7xxms)::-webkit-details-marker{display:none}.caret:where(.astro-3ii7xxms){transition:transform .2s ease-in-out;flex-shrink:0}[dir=rtl] .caret:where(.astro-3ii7xxms){transform:rotate(180deg)}:where(.astro-3ii7xxms)[open]>summary:where(.astro-3ii7xxms) .caret:where(.astro-3ii7xxms){transform:rotate(90deg)}a:where(.astro-3ii7xxms){display:block;border-radius:.25rem;text-decoration:none;color:var(--sl-color-gray-2);padding:.3em var(--sl-sidebar-item-padding-inline);line-height:1.4}a:where(.astro-3ii7xxms):hover,a:where(.astro-3ii7xxms):focus{color:var(--sl-color-white)}:where(.astro-3ii7xxms)[aria-current=page],:where(.astro-3ii7xxms)[aria-current=page]:hover,:where(.astro-3ii7xxms)[aria-current=page]:focus{font-weight:600;color:var(--sl-color-text-invert);background-color:var(--sl-color-text-accent)}a:where(.astro-3ii7xxms)>:where(.astro-3ii7xxms):not(:last-child),.group-label:where(.astro-3ii7xxms)>:where(.astro-3ii7xxms):not(:last-child){margin-inline-end:.25em}@media (min-width: 50rem){.top-level:where(.astro-3ii7xxms)>li:where(.astro-3ii7xxms)+li:where(.astro-3ii7xxms){margin-top:.5rem}.large:where(.astro-3ii7xxms){font-size:var(--sl-text-base)}a:where(.astro-3ii7xxms){font-size:var(--sl-text-sm)}} :root{--sl-text-h4: var(--sl-text-base);--sl-text-h5: var(--sl-text-base)} .sl-link-button:where(.astro-xwgiixxa){align-items:center;border:1px solid transparent;border-radius:999rem;display:inline-flex;font-size:var(--sl-text-sm);gap:.5em;line-height:1.1875;outline-offset:.25rem;padding:.4375rem 1.125rem;text-decoration:none}.sl-link-button:where(.astro-xwgiixxa).primary{background:var(--sl-color-text-accent);border-color:var(--sl-color-text-accent);color:var(--sl-color-black)}.sl-link-button:where(.astro-xwgiixxa).primary:hover{color:var(--sl-color-black)}.sl-link-button:where(.astro-xwgiixxa).secondary{border-color:inherit;color:var(--sl-color-white)}.sl-link-button:where(.astro-xwgiixxa).minimal{color:var(--sl-color-white);padding-inline:0}.sl-link-button:where(.astro-xwgiixxa) svg{flex-shrink:0}@media (min-width: 50rem){.sl-link-button:where(.astro-xwgiixxa){font-size:var(--sl-text-base);padding:.9375rem 1.25rem}}.sl-markdown-content .sl-link-button:where(.astro-xwgiixxa){margin-inline-end:1rem}.sl-markdown-content .sl-link-button:where(.astro-xwgiixxa):not(:where(p *)){margin-block:1rem} input,textarea,select{background-color:var(--sl-color-bg-nav);border-color:var(--sl-color-gray-5);border-width:2px}input[readonly]{background-color:var(--sl-color-backdrop-overlay);cursor:not-allowed} pre.mermaid:not([data-processed]){visibility:hidden} table *{overflow-wrap:normal} </style> <link rel="stylesheet" href="/_astro/tailwind.2B1cNoGl.css"> <style>.site-title{gap:calc(.5 * var(--sl-nav-gap));span{color:var(--sl-color-white)}img{height:calc(var(--sl-nav-height) - 3 * var(--sl-nav-pad-y))}} </style> <script type="module" src="/_astro/page.7qqag-5g.js"></script> <style>.card-grid:where(.astro-lrh2lqny){display:grid;gap:1rem}.card-grid:where(.astro-lrh2lqny)>*{margin-top:0!important}@media (min-width: 50rem){.card-grid:where(.astro-lrh2lqny){grid-template-columns:1fr 1fr 1fr 1fr;gap:1.5rem}.stagger:where(.astro-lrh2lqny){--stagger-height: 5rem;padding-bottom:var(--stagger-height)}.stagger:where(.astro-lrh2lqny)>*:nth-child(2n){transform:translateY(var(--stagger-height))}} </style> <style>.card:where(.astro-rcyev3ef){--sl-card-border: var(--sl-color-purple);--sl-card-bg: var(--sl-color-purple-low);border:1px solid var(--sl-color-gray-5);background-color:var(--sl-color-black);padding:clamp(1rem,calc(.125rem + 3vw),2.5rem);flex-direction:column;gap:clamp(.5rem,calc(.125rem + 1vw),1rem)}.card:where(.astro-rcyev3ef):nth-child(4n+1){--sl-card-border: var(--sl-color-orange);--sl-card-bg: var(--sl-color-orange-low)}.card:where(.astro-rcyev3ef):nth-child(4n+3){--sl-card-border: var(--sl-color-green);--sl-card-bg: var(--sl-color-green-low)}.card:where(.astro-rcyev3ef):nth-child(4n+4){--sl-card-border: var(--sl-color-red);--sl-card-bg: var(--sl-color-red-low)}.card:where(.astro-rcyev3ef):nth-child(4n+5){--sl-card-border: var(--sl-color-blue);--sl-card-bg: var(--sl-color-blue-low)}.title:where(.astro-rcyev3ef){font-weight:600;font-size:var(--sl-text-h4);color:var(--sl-color-white);line-height:var(--sl-line-height-headings);gap:1rem;align-items:center}.title:where(.astro-rcyev3ef)>a:where(.astro-rcyev3ef){color:var(--sl-color-white)!important;text-decoration-color:var(--sl-color-accent)!important}.card:where(.astro-rcyev3ef) .icon:where(.astro-rcyev3ef){border:1px solid var(--sl-card-border);background-color:var(--sl-card-bg);padding:.2em;border-radius:.25rem}.card:where(.astro-rcyev3ef) .body:where(.astro-rcyev3ef){margin:0;font-size:clamp(var(--sl-text-sm),calc(.5rem + 1vw),var(--sl-text-body))} </style> <style>.link-list:where(.astro-5tgmqq4m) ul{list-style-type:none;padding:0}.link-list:where(.astro-5tgmqq4m) li{border-bottom:1px solid var(--sl-color-gray-6);padding:.25rem 0;margin:0!important}.link-list:where(.astro-5tgmqq4m) li:last-child{border-bottom:none}.link-list:where(.astro-5tgmqq4m) a{display:flex;gap:.5rem;justify-content:space-between;align-items:center;text-decoration:none}.link-list:where(.astro-5tgmqq4m) a:after{content:"";background-color:currentColor;width:1rem;height:1rem;flex-shrink:0;mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z'%3E%3C/path%3E%3C/svg%3E");-webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z'%3E%3C/path%3E%3C/svg%3E");mask-size:100%;-webkit-mask-size:100%}[dir=rtl] .link-list:where(.astro-5tgmqq4m) a:after:not(:where([dir=rtl] [dir=ltr] *)){transform:scaleX(-1)} </style> <style>.NetworkMap--land:where(.astro-x5fqlrwg){fill:rgba(var(--gray-7-rgb),.8)}:where(.astro-x5fqlrwg)[theme=dark] .NetworkMap--land:where(.astro-x5fqlrwg){fill:rgba(var(--gray-2-rgb),.7)}.NetworkMap--datacenters:where(.astro-x5fqlrwg){fill:var(--sl-color-text-accent);stroke:var(--sl-color-text-accent);stroke-width:2px;paint-order:stroke;opacity:.85}:where(.astro-x5fqlrwg)[theme=dark] .NetworkMap--datacenters:where(.astro-x5fqlrwg){stroke:var(--background-color);stroke-width:3px} </style> <style>button:where(.astro-alpa55q7){transition:opacity .1s ease;opacity:.75;&:hover{cursor:copy;opacity:1}} </style> <style>input:where(.astro-75f4fhkp)[type=radio]{display:none}:root{--active-background: rgb(46 105 255);--hover-background: rgb(46 105 255 / .5);--active-text-color: white}:root[data-theme=dark]{--active-background: rgb(246 130 31);--hover-background: rgb(246 130 31 / .5);--active-text-color: black}#section1:where(.astro-75f4fhkp):checked~.tryit-code:where(.astro-75f4fhkp) #section1Content:where(.astro-75f4fhkp),#section2:where(.astro-75f4fhkp):checked~.tryit-code:where(.astro-75f4fhkp) #section2Content:where(.astro-75f4fhkp),#section3:where(.astro-75f4fhkp):checked~.tryit-code:where(.astro-75f4fhkp) #section3Content:where(.astro-75f4fhkp),#section4:where(.astro-75f4fhkp):checked~.tryit-code:where(.astro-75f4fhkp) #section4Content:where(.astro-75f4fhkp),#section5:where(.astro-75f4fhkp):checked~.tryit-code:where(.astro-75f4fhkp) #section5Content:where(.astro-75f4fhkp){display:block}#section1:where(.astro-75f4fhkp):checked~.tryit-sidebar:where(.astro-75f4fhkp) #section1Label:where(.astro-75f4fhkp),#section2:where(.astro-75f4fhkp):checked~.tryit-sidebar:where(.astro-75f4fhkp) #section2Label:where(.astro-75f4fhkp),#section3:where(.astro-75f4fhkp):checked~.tryit-sidebar:where(.astro-75f4fhkp) #section3Label:where(.astro-75f4fhkp),#section4:where(.astro-75f4fhkp):checked~.tryit-sidebar:where(.astro-75f4fhkp) #section4Label:where(.astro-75f4fhkp),#section5:where(.astro-75f4fhkp):checked~.tryit-sidebar:where(.astro-75f4fhkp) #section5Label:where(.astro-75f4fhkp){background-color:var(--active-background);color:var(--active-text-color)}.tryit-sidebar:where(.astro-75f4fhkp) label:where(.astro-75f4fhkp):hover{background-color:var(--hover-background)} </style> <link rel="stylesheet" href="/_astro/FooterHeroBlock_astro_astro_type_style_index_0_lang.BqgAmjvj.css"> <link rel="stylesheet" href="/_astro/WorkersIsolateDiagram_astro_astro_type_style_index_0_lang.Bc7tm2R7.css"> <meta http-equiv="X-Translated-By" content="Google"> <meta http-equiv="X-Translated-To" content="en"> <script type="text/javascript" src="https://www.gstatic.com/_/translate_http/_/js/k=translate_http.tr.en_GB.toE3TeqoPfM.O/am=gAE/d=1/rs=AN8SPfrb-VvLXC7-HeDEZvWKxfMnVTOFhw/m=corsproxy" data-sourceurl="https://developers.cloudflare.com/terraform/additional-configurations/waf-managed-rulesets/"></script> <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@20..48,100..700,0..1,-50..200" rel="stylesheet"> <script type="text/javascript" src="https://www.gstatic.com/_/translate_http/_/js/k=translate_http.tr.en_GB.toE3TeqoPfM.O/am=gAE/d=1/exm=corsproxy/ed=1/rs=AN8SPfrb-VvLXC7-HeDEZvWKxfMnVTOFhw/m=phishing_protection" data-phishing-protection-enabled="false" data-forms-warning-enabled="true" data-source-url="https://developers.cloudflare.com/terraform/additional-configurations/waf-managed-rulesets/"></script> <meta name="robots" content="none"> </head> <body class="astro-bguv2lll"> <script type="text/javascript" src="https://www.gstatic.com/_/translate_http/_/js/k=translate_http.tr.en_GB.toE3TeqoPfM.O/am=gAE/d=1/exm=corsproxy,phishing_protection/ed=1/rs=AN8SPfrb-VvLXC7-HeDEZvWKxfMnVTOFhw/m=navigationui" data-environment="prod" data-proxy-url="https://developers-cloudflare-com.translate.goog" data-proxy-full-url="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" data-source-url="https://developers.cloudflare.com/terraform/additional-configurations/waf-managed-rulesets/" data-source-language="pl" data-target-language="en" data-display-language="en-GB" data-detected-source-language="" data-is-source-untranslated="false" data-source-untranslated-url="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://developers.cloudflare.com/terraform/additional-configurations/waf-managed-rulesets/&anno=2" data-client="tr"></script><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#_top" class="astro-7q3lir66">Skip to content</a> <div class="page sl-flex astro-vrdttmbt"> <header class="header astro-vrdttmbt"> <div class="header sl-flex astro-kmkmnagf"> <div class="title-wrapper sl-flex astro-kmkmnagf"><a href="https://developers-cloudflare-com.translate.goog/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" class="site-title sl-flex astro-m46x6ez3"> <img class="astro-m46x6ez3" alt src="/_astro/logo.p_ySeMR1.svg" width="40" height="19"> <span class="astro-m46x6ez3" translate="no"> Cloudflare Docs </span> </a> </div> <div class="sl-flex print:hidden astro-kmkmnagf"><sl-doc-search data-translations="{"placeholder":"Search","translations":{"button":{"buttonText":"Search","buttonAriaLabel":"Search"},"modal":{"searchBox":{},"startScreen":{},"errorScreen":{},"footer":{},"noResultsScreen":{}}}}"> <button type="button" class="DocSearch DocSearch-Button" aria-label="Search"> <span class="DocSearch-Button-Container"> <svg width="20" height="20" class="DocSearch-Search-Icon" viewbox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round" /> </svg><span class="DocSearch-Button-Placeholder">Search</span> </span> <span class="DocSearch-Button-Keys"></span> </button> </sl-doc-search> <script type="module" src="/_astro/DocSearch.astro_astro_type_script_index_0_lang.hWdOIbgH.js"></script> </div> <div class="sl-hidden md:sl-flex print:hidden right-group astro-kmkmnagf"> <div class="sl-flex social-icons astro-kmkmnagf"> <div class="items-center hidden lg:flex mx-auto astro-r3tjzkat"><a href="https://developers-cloudflare-com.translate.goog/products/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" class="px-4 no-underline text-[--sl-color-text] font-medium astro-r3tjzkat"> <span class="astro-r3tjzkat">Products</span> </a><a href="https://developers-cloudflare-com.translate.goog/learning-paths/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" class="px-4 no-underline text-[--sl-color-text] font-medium astro-r3tjzkat"> <span class="astro-r3tjzkat">Learning</span> </a><a href="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://www.cloudflarestatus.com/" class="px-4 no-underline text-[--sl-color-text] font-medium astro-r3tjzkat"> <span class="astro-r3tjzkat">Status</span> </a><a href="https://developers-cloudflare-com.translate.goog/support/contacting-cloudflare-support/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" class="px-4 no-underline text-[--sl-color-text] font-medium astro-r3tjzkat"> <span class="astro-r3tjzkat">Support</span> </a><a href="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://dash.cloudflare.com" class="px-4 no-underline text-[--sl-color-text] font-medium astro-r3tjzkat"> <span class="astro-r3tjzkat">Log in</span> </a> </div><a href="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://github.com/cloudflare/cloudflare-docs" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">GitHub</span> <svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"> <path d="M12 .3a12 12 0 0 0-3.8 23.38c.6.12.83-.26.83-.57L9 21.07c-3.34.72-4.04-1.61-4.04-1.61-.55-1.39-1.34-1.76-1.34-1.76-1.08-.74.09-.73.09-.73 1.2.09 1.83 1.24 1.83 1.24 1.08 1.83 2.81 1.3 3.5 1 .1-.78.42-1.31.76-1.61-2.67-.3-5.47-1.33-5.47-5.93 0-1.31.47-2.38 1.24-3.22-.14-.3-.54-1.52.1-3.18 0 0 1-.32 3.3 1.23a11.5 11.5 0 0 1 6 0c2.28-1.55 3.29-1.23 3.29-1.23.64 1.66.24 2.88.12 3.18a4.65 4.65 0 0 1 1.23 3.22c0 4.61-2.8 5.63-5.48 5.92.42.36.81 1.1.81 2.22l-.01 3.29c0 .31.2.69.82.57A12 12 0 0 0 12 .3Z" /> </svg></a><a href="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://x.com/cloudflare" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">X</span> <svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"> <path d="M 18.242188 2.25 L 21.554688 2.25 L 14.324219 10.507812 L 22.828125 21.75 L 16.171875 21.75 L 10.953125 14.933594 L 4.992188 21.75 L 1.679688 21.75 L 9.40625 12.914062 L 1.257812 2.25 L 8.082031 2.25 L 12.792969 8.480469 Z M 17.082031 19.773438 L 18.914062 19.773438 L 7.082031 4.125 L 5.113281 4.125 Z M 17.082031 19.773438 " /> </svg></a><a href="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://www.youtube.com/cloudflare" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">YouTube</span> <svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"> <path d="M23.5 6.2A3 3 0 0 0 21.4 4c-1.9-.5-9.4-.5-9.4-.5s-7.5 0-9.4.5A3 3 0 0 0 .5 6.3C0 8 0 12 0 12s0 4 .5 5.8A3 3 0 0 0 2.6 20c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2c.5-2 .5-5.9.5-5.9s0-4-.5-5.8zm-14 9.4V8.4l6.3 3.6-6.3 3.6z" /> </svg></a> </div><starlight-theme-select> <label style="--sl-select-width: 6.25em" class="astro-4yphtoen"> <span class="sr-only astro-4yphtoen">Select theme</span> <svg aria-hidden="true" class="icon label-icon astro-4yphtoen astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"> <path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z" /> </svg><select value="auto" autocomplete="off" class="astro-4yphtoen"> <option value="dark" class="astro-4yphtoen">Dark</option><option value="light" class="astro-4yphtoen">Light</option><option value="auto" selected class="astro-4yphtoen">Auto</option> </select> <svg aria-hidden="true" class="icon caret astro-4yphtoen astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"> <path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z" /> </svg></label> </starlight-theme-select> <script> StarlightThemeProvider.updatePickers(); </script> <script type="module">const r="starlight-theme",o=e=>e==="auto"||e==="dark"||e==="light"?e:"auto",c=()=>o(typeof localStorage<"u"&&localStorage.getItem(r));function n(e){typeof localStorage<"u"&&localStorage.setItem(r,e==="light"||e==="dark"?e:"")}const l=()=>matchMedia("(prefers-color-scheme: light)").matches?"light":"dark";function t(e){StarlightThemeProvider.updatePickers(e),document.documentElement.dataset.theme=e==="auto"?l():e,n(e)}matchMedia("(prefers-color-scheme: light)").addEventListener("change",()=>{c()==="auto"&&t("auto")});class s extends HTMLElement{constructor(){super(),t(c()),this.querySelector("select")?.addEventListener("change",a=>{a.currentTarget instanceof HTMLSelectElement&&t(o(a.currentTarget.value))})}}customElements.define("starlight-theme-select",s);</script> <script type="module">class s extends HTMLElement{constructor(){super();const e=this.querySelector("select");e&&(e.addEventListener("change",t=>{t.currentTarget instanceof HTMLSelectElement&&(window.location.pathname=t.currentTarget.value)}),window.addEventListener("pageshow",t=>{if(!t.persisted)return;const n=e.querySelector("option[selected]")?.index;n!==e.selectedIndex&&(e.selectedIndex=n??0)}))}}customElements.define("starlight-lang-select",s);</script> </div> </div> </header> <nav class="sidebar print:hidden astro-vrdttmbt" aria-label="Main"><starlight-menu-button class="print:hidden astro-jif73yzw"> <button aria-expanded="false" aria-label="Menu" aria-controls="starlight__sidebar" class="sl-flex md:sl-hidden astro-jif73yzw"> <svg aria-hidden="true" class="astro-jif73yzw astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"> <path d="M3 8h18a1 1 0 1 0 0-2H3a1 1 0 0 0 0 2Zm18 8H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Zm0-5H3a1 1 0 0 0 0 2h18a1 1 0 0 0 0-2Z" /> </svg></button> </starlight-menu-button> <script type="module">class s extends HTMLElement{constructor(){super(),this.btn=this.querySelector("button"),this.btn.addEventListener("click",()=>this.toggleExpanded());const t=this.closest("nav");t&&t.addEventListener("keyup",e=>this.closeOnEscape(e))}setExpanded(t){this.setAttribute("aria-expanded",String(t)),document.body.toggleAttribute("data-mobile-menu-expanded",t)}toggleExpanded(){this.setExpanded(this.getAttribute("aria-expanded")!=="true")}closeOnEscape(t){t.code==="Escape"&&(this.setExpanded(!1),this.btn.focus())}}customElements.define("starlight-menu-button",s);</script> <div id="starlight__sidebar" class="sidebar-pane astro-vrdttmbt"> <div class="sidebar-content sl-flex astro-vrdttmbt"><a href="https://developers-cloudflare-com.translate.goog/terraform/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" class="flex items-center decoration-[color:var(--orange-accent-200)] hover:opacity-80"> <svg width="0.88em" height="1em" class="mr-2 text-4xl text-[color:var(--orange-accent-200)]" data-icon="terraform"><symbol id="ai:local:terraform" viewbox="0 0 48 55"> <path fill="currentColor" fill-rule="evenodd" d="m16.542 9.612 14.91 8.61v17.214l-14.91-8.606z" clip-rule="evenodd" /> <path fill="url(#a)" fill-rule="evenodd" d="m16.542 9.612 14.91 8.61v17.214l-14.91-8.606z" clip-rule="evenodd" /> <path fill="url(#b)" fill-rule="evenodd" d="m16.542 9.612 14.91 8.61v17.214l-14.91-8.606z" clip-rule="evenodd" /> <path fill="currentColor" fill-rule="evenodd" d="M33.089 18.221v17.215l14.91-8.606V9.612l-14.91 8.61Z" clip-rule="evenodd" /> <path fill="url(#c)" fill-rule="evenodd" d="M33.089 18.221v17.215l14.91-8.606V9.612l-14.91 8.61Z" clip-rule="evenodd" /> <path fill="url(#d)" fill-rule="evenodd" d="M33.089 18.221v17.215l14.91-8.606V9.612l-14.91 8.61Z" clip-rule="evenodd" /> <path fill="currentColor" fill-rule="evenodd" d="M0 0v17.219l14.91 8.61V8.608z" clip-rule="evenodd" /> <path fill="url(#e)" fill-rule="evenodd" d="M0 0v17.219l14.91 8.61V8.608z" clip-rule="evenodd" /> <path fill="url(#f)" fill-rule="evenodd" d="M0 0v17.219l14.91 8.61V8.608z" clip-rule="evenodd" /> <path fill="currentColor" fill-rule="evenodd" d="m16.542 45.93 14.91 8.61V37.325l-14.91-8.61v17.216Z" clip-rule="evenodd" /> <path fill="url(#g)" fill-rule="evenodd" d="m16.542 45.93 14.91 8.61V37.325l-14.91-8.61v17.216Z" clip-rule="evenodd" /> <path fill="url(#h)" fill-rule="evenodd" d="m16.542 45.93 14.91 8.61V37.325l-14.91-8.61v17.216Z" clip-rule="evenodd" /> <defs> <lineargradient id="a" x1="23.997" x2="23.997" y1="9.612" y2="35.436" gradientunits="userSpaceOnUse"> <stop stop-color="#fff" /> <stop offset="1" stop-color="#fff" stop-opacity="0" /> </lineargradient> <lineargradient id="b" x1="23.997" x2="23.997" y1="9.612" y2="35.436" gradientunits="userSpaceOnUse"> <stop stop-color="#fff" /> <stop offset="1" stop-color="#fff" stop-opacity="0" /> </lineargradient> <lineargradient id="c" x1="40.544" x2="40.544" y1="9.612" y2="35.436" gradientunits="userSpaceOnUse"> <stop stop-color="#fff" /> <stop offset="1" stop-color="#fff" stop-opacity="0" /> </lineargradient> <lineargradient id="d" x1="40.544" x2="40.544" y1="9.612" y2="35.436" gradientunits="userSpaceOnUse"> <stop stop-color="#fff" /> <stop offset="1" stop-color="#fff" stop-opacity="0" /> </lineargradient> <lineargradient id="e" x1="7.455" x2="7.455" y1="0" y2="25.828" gradientunits="userSpaceOnUse"> <stop stop-color="#fff" /> <stop offset="1" stop-color="#fff" stop-opacity="0" /> </lineargradient> <lineargradient id="f" x1="7.455" x2="7.455" y1="0" y2="25.828" gradientunits="userSpaceOnUse"> <stop stop-color="#fff" /> <stop offset="1" stop-color="#fff" stop-opacity="0" /> </lineargradient> <lineargradient id="g" x1="23.997" x2="23.997" y1="28.716" y2="54.54" gradientunits="userSpaceOnUse"> <stop stop-color="#fff" /> <stop offset="1" stop-color="#fff" stop-opacity="0" /> </lineargradient> <lineargradient id="h" x1="23.997" x2="23.997" y1="28.716" y2="54.54" gradientunits="userSpaceOnUse"> <stop stop-color="#fff" /> <stop offset="1" stop-color="#fff" stop-opacity="0" /> </lineargradient> </defs> </symbol><use href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#ai:local:terraform"></use> </svg><span class="text-black"> <strong> Terraform </strong> </span> </a> <!-- @ts-expect-error sidebar props don't match as we add additional things --> <sl-sidebar-state-persist data-hash="0vbbb1v" class="astro-kku4brbg"> <script aria-hidden="true"> (() => { try { if (!matchMedia('(min-width: 50em)').matches) return; /** @type {HTMLElement | null} */ const target = document.querySelector('sl-sidebar-state-persist'); const state = JSON.parse(sessionStorage.getItem('sl-sidebar-state') || '0'); if (!target || !state || target.dataset.hash !== state.hash) return; window._starlightScrollRestore = state.scroll; customElements.define( 'sl-sidebar-restore', class SidebarRestore extends HTMLElement { connectedCallback() { try { const idx = parseInt(this.dataset.index || ''); const details = this.closest('details'); if (details && typeof state.open[idx] === 'boolean') details.open = state.open[idx]; } catch {} } } ); } catch {} })(); </script> <ul class="top-level astro-3ii7xxms"> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="large astro-3ii7xxms"> <span class="astro-3ii7xxms">Overview</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/installing/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="large astro-3ii7xxms"> <span class="astro-3ii7xxms">Get started</span> </a></li> <li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"><sl-sidebar-restore data-index="0"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"><span class="large astro-3ii7xxms">Tutorials</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"> <path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z" /> </svg></summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/tutorial/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms" data-group-label="Tutorials"> <span class="astro-3ii7xxms">Overview</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/tutorial/initialize-terraform/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">1 – Initialize Terraform</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/tutorial/track-history/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">2 – Track your history</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/tutorial/configure-https-settings/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">3 – Configure HTTPS settings</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/tutorial/use-load-balancing/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">4 – Improve performance</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/tutorial/add-page-rules/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">5 – Add exceptions with Page Rules</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/tutorial/revert-configuration/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">6 – Revert configuration</span> </a></li> </ul> </details></li> <li class="astro-3ii7xxms"> <details open class="astro-3ii7xxms"><sl-sidebar-restore data-index="1"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"><span class="large astro-3ii7xxms">Additional configurations</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"> <path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z" /> </svg></summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="page" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">WAF Managed Rules</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/ddos-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">DDoS managed rulesets</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/rate-limiting-rules/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Rate limiting rules</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-custom-rules/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">WAF custom rules</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/transform-rules/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Transform Rules</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/rules/url-forwarding/single-redirects/terraform-example/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Single Redirects ↗</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/rules/configuration-rules/examples/define-single-configuration-terraform/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Configuration Rules ↗</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/rules/origin-rules/examples/define-single-origin-terraform/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Origin Rules ↗</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/cache/how-to/cache-rules/terraform-example/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Cache Rules ↗</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/rules/snippets/create-terraform/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Snippets ↗</span> </a></li> </ul> </details></li> <li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"><sl-sidebar-restore data-index="2"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"><span class="large astro-3ii7xxms">Advanced topics</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"> <path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z" /> </svg></summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/advanced-topics/best-practices/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Best practices</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/advanced-topics/import-cloudflare-resources/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Import Cloudflare resources</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/advanced-topics/provider-customization/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Provider customization</span> </a></li> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/advanced-topics/remote-backend/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Remote R2 backend</span> </a></li> </ul> </details></li> <li class="astro-3ii7xxms"> <details class="astro-3ii7xxms"><sl-sidebar-restore data-index="3"></sl-sidebar-restore> <summary class="astro-3ii7xxms"> <div class="group-label astro-3ii7xxms"><span class="large astro-3ii7xxms">Troubleshooting</span> </div> <svg aria-hidden="true" class="caret astro-3ii7xxms astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.25rem;"> <path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z" /> </svg></summary> <ul class="astro-3ii7xxms"> <li class="astro-3ii7xxms"><a href="https://developers-cloudflare-com.translate.goog/terraform/troubleshooting/rule-id-changes/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" aria-current="false" class="astro-3ii7xxms"> <span class="astro-3ii7xxms">Rule IDs change when making updates</span> </a></li> </ul> </details></li> </ul> <script aria-hidden="true"> (() => { const scroller = document.getElementById('starlight__sidebar'); if (!window._starlightScrollRestore || !scroller) return; scroller.scrollTop = window._starlightScrollRestore; delete window._starlightScrollRestore; })(); </script> </sl-sidebar-state-persist> <div class="md:sl-hidden"> <div class="mobile-preferences sl-flex astro-wu23bvmt"> <div class="sl-flex social-icons astro-wu23bvmt"> <div class="items-center hidden lg:flex mx-auto astro-r3tjzkat"><a href="https://developers-cloudflare-com.translate.goog/products/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" class="px-4 no-underline text-[--sl-color-text] font-medium astro-r3tjzkat"> <span class="astro-r3tjzkat">Products</span> </a><a href="https://developers-cloudflare-com.translate.goog/learning-paths/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" class="px-4 no-underline text-[--sl-color-text] font-medium astro-r3tjzkat"> <span class="astro-r3tjzkat">Learning</span> </a><a href="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://www.cloudflarestatus.com/" class="px-4 no-underline text-[--sl-color-text] font-medium astro-r3tjzkat"> <span class="astro-r3tjzkat">Status</span> </a><a href="https://developers-cloudflare-com.translate.goog/support/contacting-cloudflare-support/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" class="px-4 no-underline text-[--sl-color-text] font-medium astro-r3tjzkat"> <span class="astro-r3tjzkat">Support</span> </a><a href="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://dash.cloudflare.com" class="px-4 no-underline text-[--sl-color-text] font-medium astro-r3tjzkat"> <span class="astro-r3tjzkat">Log in</span> </a> </div><a href="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://github.com/cloudflare/cloudflare-docs" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">GitHub</span> <svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"> <path d="M12 .3a12 12 0 0 0-3.8 23.38c.6.12.83-.26.83-.57L9 21.07c-3.34.72-4.04-1.61-4.04-1.61-.55-1.39-1.34-1.76-1.34-1.76-1.08-.74.09-.73.09-.73 1.2.09 1.83 1.24 1.83 1.24 1.08 1.83 2.81 1.3 3.5 1 .1-.78.42-1.31.76-1.61-2.67-.3-5.47-1.33-5.47-5.93 0-1.31.47-2.38 1.24-3.22-.14-.3-.54-1.52.1-3.18 0 0 1-.32 3.3 1.23a11.5 11.5 0 0 1 6 0c2.28-1.55 3.29-1.23 3.29-1.23.64 1.66.24 2.88.12 3.18a4.65 4.65 0 0 1 1.23 3.22c0 4.61-2.8 5.63-5.48 5.92.42.36.81 1.1.81 2.22l-.01 3.29c0 .31.2.69.82.57A12 12 0 0 0 12 .3Z" /> </svg></a><a href="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://x.com/cloudflare" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">X</span> <svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"> <path d="M 18.242188 2.25 L 21.554688 2.25 L 14.324219 10.507812 L 22.828125 21.75 L 16.171875 21.75 L 10.953125 14.933594 L 4.992188 21.75 L 1.679688 21.75 L 9.40625 12.914062 L 1.257812 2.25 L 8.082031 2.25 L 12.792969 8.480469 Z M 17.082031 19.773438 L 18.914062 19.773438 L 7.082031 4.125 L 5.113281 4.125 Z M 17.082031 19.773438 " /> </svg></a><a href="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://www.youtube.com/cloudflare" rel="me" class="sl-flex astro-wy4te6ga"><span class="sr-only astro-wy4te6ga">YouTube</span> <svg aria-hidden="true" class="astro-wy4te6ga astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"> <path d="M23.5 6.2A3 3 0 0 0 21.4 4c-1.9-.5-9.4-.5-9.4-.5s-7.5 0-9.4.5A3 3 0 0 0 .5 6.3C0 8 0 12 0 12s0 4 .5 5.8A3 3 0 0 0 2.6 20c1.9.6 9.4.6 9.4.6s7.5 0 9.4-.6a3 3 0 0 0 2.1-2c.5-2 .5-5.9.5-5.9s0-4-.5-5.8zm-14 9.4V8.4l6.3 3.6-6.3 3.6z" /> </svg></a> </div><starlight-theme-select> <label style="--sl-select-width: 6.25em" class="astro-4yphtoen"> <span class="sr-only astro-4yphtoen">Select theme</span> <svg aria-hidden="true" class="icon label-icon astro-4yphtoen astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"> <path d="M21 14h-1V7a3 3 0 0 0-3-3H7a3 3 0 0 0-3 3v7H3a1 1 0 0 0-1 1v2a3 3 0 0 0 3 3h14a3 3 0 0 0 3-3v-2a1 1 0 0 0-1-1ZM6 7a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v7H6V7Zm14 10a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1v-1h16v1Z" /> </svg><select value="auto" autocomplete="off" class="astro-4yphtoen"> <option value="dark" class="astro-4yphtoen">Dark</option><option value="light" class="astro-4yphtoen">Light</option><option value="auto" selected class="astro-4yphtoen">Auto</option> </select> <svg aria-hidden="true" class="icon caret astro-4yphtoen astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1em;"> <path d="M17 9.17a1 1 0 0 0-1.41 0L12 12.71 8.46 9.17a1 1 0 1 0-1.41 1.42l4.24 4.24a1.002 1.002 0 0 0 1.42 0L17 10.59a1.002 1.002 0 0 0 0-1.42Z" /> </svg></label> </starlight-theme-select> <script> StarlightThemeProvider.updatePickers(); </script> </div> </div> </div> </div> </nav> <div class="main-frame astro-vrdttmbt"> <script type="module">const a=document.getElementById("starlight__sidebar"),n=a?.querySelector("sl-sidebar-state-persist"),o="sl-sidebar-state",i=()=>{let t=[];const e=n?.dataset.hash||"";try{const s=sessionStorage.getItem(o),r=JSON.parse(s||"{}");Array.isArray(r.open)&&r.hash===e&&(t=r.open)}catch{}return{hash:e,open:t,scroll:a?.scrollTop||0}},c=t=>{try{sessionStorage.setItem(o,JSON.stringify(t))}catch{}},d=()=>c(i()),l=(t,e)=>{const s=i();s.open[e]=t,c(s)};n?.addEventListener("click",t=>{if(!(t.target instanceof Element))return;const e=t.target.closest("summary")?.closest("details");if(!e)return;const s=e.querySelector("sl-sidebar-restore"),r=parseInt(s?.dataset.index||"");isNaN(r)||l(!e.open,r)});addEventListener("visibilitychange",()=>{document.visibilityState==="hidden"&&d()});addEventListener("pageHide",d);</script> <div class="lg:sl-flex astro-67yu43on"> <aside class="right-sidebar-container print:hidden astro-67yu43on"> <div class="right-sidebar astro-67yu43on"> <style>astro-island,astro-slot,astro-static-slot{display:contents}</style> <script>(()=>{var l=(n,t)=>{let i=async()=>{await(await n())()},e=typeof t.value=="object"?t.value:void 0,s={timeout:e==null?void 0:e.timeout};"requestIdleCallback"in window?window.requestIdleCallback(i,s):setTimeout(i,s.timeout||200)};(self.Astro||(self.Astro={})).idle=l;window.dispatchEvent(new Event("astro:idle"));})();;(()=>{var A=Object.defineProperty;var g=(i,o,a)=>o in i?A(i,o,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[o]=a;var d=(i,o,a)=>g(i,typeof o!="symbol"?o+"":o,a);{let i={0:t=>m(t),1:t=>a(t),2:t=>new RegExp(t),3:t=>new Date(t),4:t=>new Map(a(t)),5:t=>new Set(a(t)),6:t=>BigInt(t),7:t=>new URL(t),8:t=>new Uint8Array(t),9:t=>new Uint16Array(t),10:t=>new Uint32Array(t),11:t=>1/0*t},o=t=>{let[l,e]=t;return l in i?i[l](e):void 0},a=t=>t.map(o),m=t=>typeof t!="object"||t===null?t:Object.fromEntries(Object.entries(t).map(([l,e])=>[l,o(e)]));class y extends HTMLElement{constructor(){super(...arguments);d(this,"Component");d(this,"hydrator");d(this,"hydrate",async()=>{var b;if(!this.hydrator||!this.isConnected)return;let e=(b=this.parentElement)==null?void 0:b.closest("astro-island[ssr]");if(e){e.addEventListener("astro:hydrate",this.hydrate,{once:!0});return}let c=this.querySelectorAll("astro-slot"),n={},h=this.querySelectorAll("template[data-astro-template]");for(let r of h){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("data-astro-template")||"default"]=r.innerHTML,r.remove())}for(let r of c){let s=r.closest(this.tagName);s!=null&&s.isSameNode(this)&&(n[r.getAttribute("name")||"default"]=r.innerHTML)}let p;try{p=this.hasAttribute("props")?m(JSON.parse(this.getAttribute("props"))):{}}catch(r){let s=this.getAttribute("component-url")||"<unknown>",v=this.getAttribute("component-export");throw v&&(s+=` (export ${v})`),console.error(`[hydrate] Error parsing props for component ${s}`,this.getAttribute("props"),r),r}let u;await this.hydrator(this)(this.Component,p,n,{client:this.getAttribute("client")}),this.removeAttribute("ssr"),this.dispatchEvent(new CustomEvent("astro:hydrate"))});d(this,"unmount",()=>{this.isConnected||this.dispatchEvent(new CustomEvent("astro:unmount"))})}disconnectedCallback(){document.removeEventListener("astro:after-swap",this.unmount),document.addEventListener("astro:after-swap",this.unmount,{once:!0})}connectedCallback(){if(!this.hasAttribute("await-children")||document.readyState==="interactive"||document.readyState==="complete")this.childrenConnectedCallback();else{let e=()=>{document.removeEventListener("DOMContentLoaded",e),c.disconnect(),this.childrenConnectedCallback()},c=new MutationObserver(()=>{var n;((n=this.lastChild)==null?void 0:n.nodeType)===Node.COMMENT_NODE&&this.lastChild.nodeValue==="astro:end"&&(this.lastChild.remove(),e())});c.observe(this,{childList:!0}),document.addEventListener("DOMContentLoaded",e)}}async childrenConnectedCallback(){let e=this.getAttribute("before-hydration-url");e&&await import(e),this.start()}async start(){let e=JSON.parse(this.getAttribute("opts")),c=this.getAttribute("client");if(Astro[c]===void 0){window.addEventListener(`astro:${c}`,()=>this.start(),{once:!0});return}try{await Astro[c](async()=>{let n=this.getAttribute("renderer-url"),[h,{default:p}]=await Promise.all([import(this.getAttribute("component-url")),n?import(n):()=>()=>{}]),u=this.getAttribute("component-export")||"default";if(!u.includes("."))this.Component=h[u];else{this.Component=h;for(let f of u.split("."))this.Component=this.Component[f]}return this.hydrator=p,this.hydrate},e,this)}catch(n){console.error(`[astro-island] Error hydrating ${this.getAttribute("component-url")}`,n)}}attributeChangedCallback(){this.hydrate()}}d(y,"observedAttributes",["props"]),customElements.get("astro-island")||customElements.define("astro-island",y)}})();</script> <div class="lg:sl-hidden astro-pb3aqygn"> <mobile-starlight-toc data-min-h="2" data-max-h="3" class="astro-doynk5tl"> <nav aria-labelledby="starlight__on-this-page--mobile" class="astro-doynk5tl"> <details id="starlight__mobile-toc" class="astro-doynk5tl"> <summary id="starlight__on-this-page--mobile" class="sl-flex astro-doynk5tl"> <div class="toggle sl-flex astro-doynk5tl"> On this page <svg aria-hidden="true" class="caret astro-doynk5tl astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1rem;"> <path d="m14.83 11.29-4.24-4.24a1 1 0 1 0-1.42 1.41L12.71 12l-3.54 3.54a1 1 0 0 0 0 1.41 1 1 0 0 0 .71.29 1 1 0 0 0 .71-.29l4.24-4.24a1.002 1.002 0 0 0 0-1.42Z" /> </svg> </div><span class="display-current astro-doynk5tl"></span></summary> <div class="dropdown astro-doynk5tl"> <ul class="isMobile astro-g2bywc46" style="--depth: 0;"> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#_top" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Overview</span> </a></li> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#before-you-start" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Before you start</span> </a> <ul class="isMobile astro-g2bywc46" style="--depth: 1;"> <li class="astro-g2bywc46" style="--depth: 1;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#obtain-the-necessary-account-zone-and-managed-ruleset-ids" class="astro-g2bywc46" style="--depth: 1;"> <span class="astro-g2bywc46" style="--depth: 1;">Obtain the necessary account, zone, and managed ruleset IDs</span> </a></li> <li class="astro-g2bywc46" style="--depth: 1;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#import-or-delete-existing-rulesets" class="astro-g2bywc46" style="--depth: 1;"> <span class="astro-g2bywc46" style="--depth: 1;">Import or delete existing rulesets</span> </a></li> </ul></li> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#deploy-managed-rulesets-at-the-zone-level" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Deploy managed rulesets at the zone level</span> </a></li> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#deploy-managed-rulesets-at-the-account-level" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Deploy managed rulesets at the account level</span> </a></li> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-skip-rules" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Configure skip rules</span> </a></li> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-overrides" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Configure overrides</span> </a></li> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-payload-logging" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Configure payload logging</span> </a></li> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-the-owasp-paranoia-level-score-threshold-and-action" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Configure the OWASP paranoia level, score threshold, and action</span> </a></li> </ul> </div> </details> </nav> </mobile-starlight-toc> <script type="module" src="/_astro/MobileTableOfContents.astro_astro_type_script_index_0_lang.CwvHEPnB.js"></script> </div> <div class="right-sidebar-panel sl-hidden lg:sl-block astro-pb3aqygn"> <div class="sl-container astro-pb3aqygn"> <starlight-toc data-min-h="2" data-max-h="3"> <nav aria-labelledby="starlight__on-this-page"> <h2 id="starlight__on-this-page">On this page</h2> <ul class="astro-g2bywc46" style="--depth: 0;"> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#_top" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Overview</span> </a></li> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#before-you-start" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Before you start</span> </a> <ul class="astro-g2bywc46" style="--depth: 1;"> <li class="astro-g2bywc46" style="--depth: 1;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#obtain-the-necessary-account-zone-and-managed-ruleset-ids" class="astro-g2bywc46" style="--depth: 1;"> <span class="astro-g2bywc46" style="--depth: 1;">Obtain the necessary account, zone, and managed ruleset IDs</span> </a></li> <li class="astro-g2bywc46" style="--depth: 1;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#import-or-delete-existing-rulesets" class="astro-g2bywc46" style="--depth: 1;"> <span class="astro-g2bywc46" style="--depth: 1;">Import or delete existing rulesets</span> </a></li> </ul></li> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#deploy-managed-rulesets-at-the-zone-level" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Deploy managed rulesets at the zone level</span> </a></li> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#deploy-managed-rulesets-at-the-account-level" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Deploy managed rulesets at the account level</span> </a></li> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-skip-rules" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Configure skip rules</span> </a></li> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-overrides" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Configure overrides</span> </a></li> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-payload-logging" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Configure payload logging</span> </a></li> <li class="astro-g2bywc46" style="--depth: 0;"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-the-owasp-paranoia-level-score-threshold-and-action" class="astro-g2bywc46" style="--depth: 0;"> <span class="astro-g2bywc46" style="--depth: 0;">Configure the OWASP paranoia level, score threshold, and action</span> </a></li> </ul> </nav> </starlight-toc> <script type="module" src="/_astro/TableOfContents.astro_astro_type_script_index_0_lang.CxWEh7Yp.js"></script><br><astro-island uid="ZcQfTO" prefix="r1" component-url="/_astro/FeedbackPrompt.sIVdSYEF.js" component-export="default" renderer-url="/_astro/client.BUsrUfVi.js" props="{}" ssr client="idle" opts="{"name":"FeedbackPrompt","value":true}" await-children> <div> <h2>Was this helpful?</h2><button class="cursor-pointer bg-transparent"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewbox="0 0 24 24" class="text-2xl text-sl hover:text-accent" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"> <path fill="none" d="M0 0h24v24H0V0zm0 0h24v24H0V0z" /><path d="M9 21h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-2c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.58 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2zM9 9l4.34-4.34L12 10h9v2l-3 7H9V9zM1 9h4v12H1z" /> </svg></button><button class="cursor-pointer bg-transparent"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewbox="0 0 24 24" class="text-2xl text-sl hover:text-accent" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"> <path fill="none" d="M0 0h24v24H0V0zm0 0h24v24H0V0z" /><path d="M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v2c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm0 12-4.34 4.34L12 14H3v-2l3-7h9v10zm4-12h4v12h-4z" /> </svg></button> </div><!--astro:end--> </astro-island> </div> </div> </div> </aside> <div class="main-pane astro-67yu43on"> <main data-pagefind-body class="astro-bguv2lll" lang="en" dir="ltr"> <div class="content-panel astro-7nkwcw3z"> <div class="sl-container astro-7nkwcw3z"><astro-breadcrumbs data-main-bem-class="c-breadcrumbs" data-id="breadcrumbs" data-path-length="3" data-truncated="true"> <nav aria-label="breadcrumbs" class="c-breadcrumbs" id="breadcrumbs"> <ol class="c-breadcrumbs__crumbs has-separators"> <li class="c-breadcrumbs__crumb"><a href="https://developers-cloudflare-com.translate.goog/products/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" class="c-breadcrumbs__link is-index" aria-current="false"> Products </a> <span class="c-breadcrumbs__separator" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="astro-couag5ji"> <polyline points="9 18 15 12 9 6" class="astro-couag5ji"></polyline> </svg></span></li> <li class="c-breadcrumbs__crumb has-ellipsis"><button type="button" aria-label="Show hidden navigation" class="c-breadcrumbs__truncated-button"> … </button> <span class="c-breadcrumbs__separator" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="astro-couag5ji"> <polyline points="9 18 15 12 9 6" class="astro-couag5ji"></polyline> </svg></span></li> <li class="c-breadcrumbs__crumb"><a href="https://developers-cloudflare-com.translate.goog/terraform/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" class="c-breadcrumbs__link" aria-current="false"> Terraform </a> <span class="c-breadcrumbs__separator" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="astro-couag5ji"> <polyline points="9 18 15 12 9 6" class="astro-couag5ji"></polyline> </svg></span></li> <li class="c-breadcrumbs__crumb"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" class="c-breadcrumbs__link" aria-current="false"> Additional configurations </a> <span class="c-breadcrumbs__separator" aria-hidden="true"> <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewbox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="astro-couag5ji"> <polyline points="9 18 15 12 9 6" class="astro-couag5ji"></polyline> </svg></span></li> <li class="c-breadcrumbs__crumb"><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" class="c-breadcrumbs__link is-current" aria-current="location"> WAF Managed Rules configuration using Terraform </a></li> </ol> </nav> </astro-breadcrumbs> <script type="application/ld+json">{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"item":{"@id":"/products/","name":"Products"}},{"@type":"ListItem","position":2,"item":{"@id":"/terraform/","name":"Terraform"}},{"@type":"ListItem","position":3,"item":{"@id":"/terraform/additional-configurations/","name":"Additional configurations"}},{"@type":"ListItem","position":4,"item":{"@id":"/terraform/additional-configurations/waf-managed-rulesets/","name":"WAF Managed Rules configuration using Terraform"}}]}</script> <script type="module">class t extends HTMLElement{constructor(){super(),this.isManualToggle=!1,this.breadcrumbs=null,this.mainBemClass=null,this.totalWidth=0,this.resizeObserver=null,this.handleTruncatedButtonClick=()=>{this.breadcrumbs?.classList.remove("is-truncated"),this.isManualToggle=!0},this.mainBemClass=this.dataset.mainBemClass||null;const e=this.dataset.id;!("truncated"in this.dataset)||!e||(this.breadcrumbs=document.getElementById(e),this.initializeCrumbs(),this.setupResizeObserver())}initializeCrumbs(){this.breadcrumbs?.querySelectorAll(`.${this.mainBemClass}__crumb`)?.forEach(s=>{this.totalWidth+=s.offsetWidth})}setupResizeObserver(){this.resizeObserver=new ResizeObserver(e=>{e.forEach(s=>{this.checkOverflow(s.target.clientWidth)})}),this.breadcrumbs&&this.resizeObserver.observe(this.breadcrumbs)}connectedCallback(){this.showHiddenCrumbs()}disconnectedCallback(){this.resizeObserver&&this.breadcrumbs&&(this.resizeObserver.unobserve(this.breadcrumbs),this.resizeObserver.disconnect())}toggleTruncated(e){this.breadcrumbs?.classList.toggle("is-truncated",e)}showHiddenCrumbs(){const e=this.breadcrumbs?.querySelector(`.${this.mainBemClass}__truncated-button`);e?.removeEventListener("click",this.handleTruncatedButtonClick),e?.addEventListener("click",this.handleTruncatedButtonClick.bind(this))}checkOverflow(e){const s=this.totalWidth>e&&!this.isManualToggle;this.toggleTruncated(s),s||(this.isManualToggle=!1)}}customElements.get("astro-breadcrumbs")||customElements.define("astro-breadcrumbs",t);</script> <h1 id="_top" class="astro-j6tvhyss">WAF Managed Rules configuration using Terraform</h1> </div> </div> <div class="content-panel astro-7nkwcw3z"> <div class="sl-container astro-7nkwcw3z"><starlight-image-zoom> <template class="astro-vjux6bgf"><dialog class="starlight-image-zoom-dialog astro-vjux6bgf"> <button aria-label="Unzoom image" class="starlight-image-zoom-control astro-vjux6bgf"> <svg aria-hidden="true" fill="currentColor" viewbox="0 0 24 24" class="astro-vjux6bgf"><use href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#starlight-image-zoom-icon-unzoom" class="astro-vjux6bgf"></use> </svg></button> <figure class="astro-vjux6bgf"></figure> </dialog> </template> <svg xmlns="http://www.w3.org/2000/svg" style="display:none" class="astro-vjux6bgf"><symbol id="starlight-image-zoom-icon-zoom" viewbox="0 0 24 24" class="astro-vjux6bgf"> <path d="M9.79 12.79 4 18.59V17a1 1 0 0 0-2 0v4a1 1 0 0 0 .08.38 1 1 0 0 0 .54.54A1 1 0 0 0 3 22h4a1 1 0 0 0 0-2H5.41l5.8-5.79a1 1 0 0 0-1.42-1.42ZM21.92 2.62a1 1 0 0 0-.54-.54A1 1 0 0 0 21 2h-4a1 1 0 0 0 0 2h1.59l-5.8 5.79a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0L20 5.41V7a1 1 0 0 0 2 0V3a1 1 0 0 0-.08-.38Z" class="astro-vjux6bgf" /> </symbol> <symbol id="starlight-image-zoom-icon-unzoom" viewbox="0 0 24 24" class="astro-vjux6bgf"> <path d="M21.71 2.29a1 1 0 0 0-1.42 0l-5.79 5.8V6.5a1 1 0 0 0-2 0v4a1 1 0 0 0 .08.38 1 1 0 0 0 .54.54 1 1 0 0 0 .38.08h4a1 1 0 0 0 0-2h-1.59l5.8-5.79a1 1 0 0 0 0-1.42ZM10.88 12.58a1 1 0 0 0-.38-.08h-4a1 1 0 0 0 0 2h1.59l-5.8 5.79a1 1 0 0 0 0 1.42 1 1 0 0 0 1.42 0l5.79-5.8v1.59a1 1 0 0 0 2 0v-4a1 1 0 0 0-.08-.38 1 1 0 0 0-.54-.54Z" class="astro-vjux6bgf" /> </symbol> </svg> </starlight-image-zoom> <script type="module" src="/_astro/ImageZoom.astro_astro_type_script_index_0_lang.BjAW4avr.js"></script> <div class="sl-markdown-content astro-cedpceuv"> <p>This page provides examples of deploying and configuring <a href="https://developers-cloudflare-com.translate.goog/waf/managed-rules/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB">WAF Managed Rules</a> in your zone or account using Terraform. It covers the following configurations:</p> <ul> <li><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#deploy-managed-rulesets-at-the-zone-level">Deploy managed rulesets at the zone level</a></li> <li><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#deploy-managed-rulesets-at-the-account-level">Deploy managed rulesets at the account level</a></li> <li><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-skip-rules">Configure skip rules</a></li> <li><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-payload-logging">Configure payload logging</a></li> <li><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-overrides">Configure overrides</a></li> <li><a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-the-owasp-paranoia-level-score-threshold-and-action">Configure the OWASP paranoia level, score threshold, and action</a></li> </ul> <p>For more information on deploying and configuring rulesets using the Rulesets API, refer to <a href="https://developers-cloudflare-com.translate.goog/ruleset-engine/managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB">Work with managed rulesets</a> in the Ruleset Engine documentation.</p> <div tabindex="-1" class="heading-wrapper level-h2"> <h2 id="before-you-start">Before you start</h2><a class="anchor-link" href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#before-you-start"><span aria-hidden="true" class="anchor-icon"> <svg width="16" height="16" viewbox="0 0 24 24"> <path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z" /> </svg></span></a> </div> <div tabindex="-1" class="heading-wrapper level-h3"> <h3 id="obtain-the-necessary-account-zone-and-managed-ruleset-ids">Obtain the necessary account, zone, and managed ruleset IDs</h3><a class="anchor-link" href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#obtain-the-necessary-account-zone-and-managed-ruleset-ids"><span aria-hidden="true" class="anchor-icon"> <svg width="16" height="16" viewbox="0 0 24 24"> <path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z" /> </svg></span></a> </div> <p>The Terraform configurations provided in this page need the zone ID (or account ID) of the zone/account where you will deploy the managed rulesets.</p> <ul> <li>To retrieve the list of accounts you have access to, including their IDs, use the <a href="https://developers-cloudflare-com.translate.goog/api/resources/accounts/methods/list/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB">List accounts</a> operation.</li> <li>To retrieve the list of zones you have access to, including their IDs, use the <a href="https://developers-cloudflare-com.translate.goog/api/resources/zones/methods/list/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB">List zones</a> operation.</li> </ul> <p>The deployment of managed rulesets via Terraform requires that you use the ruleset IDs. To find the IDs of managed rulesets, use the <a href="https://developers-cloudflare-com.translate.goog/api/resources/rulesets/methods/list/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB">List account rulesets</a> operation. The response will include the description and IDs of existing managed rulesets.</p> <p>The IDs of WAF managed rulesets are also available in the <a href="https://developers-cloudflare-com.translate.goog/waf/managed-rules/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#managed-rulesets">WAF Managed Rules</a> page.</p> <div tabindex="-1" class="heading-wrapper level-h3"> <h3 id="import-or-delete-existing-rulesets">Import or delete existing rulesets</h3><a class="anchor-link" href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#import-or-delete-existing-rulesets"><span aria-hidden="true" class="anchor-icon"> <svg width="16" height="16" viewbox="0 0 24 24"> <path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z" /> </svg></span></a> </div> <p>Terraform assumes that it has complete control over account and zone rulesets. If you already have rulesets configured in your account or zone, do one of the following:</p> <ul> <li><a href="https://developers-cloudflare-com.translate.goog/terraform/advanced-topics/import-cloudflare-resources/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB">Import existing rulesets to Terraform</a> using the <code dir="auto">cf-terraforming</code> tool. Recent versions of the tool can generate resource definitions for existing rulesets and import their configuration to Terraform state.</li> <li>Start from scratch by <a href="https://developers-cloudflare-com.translate.goog/ruleset-engine/rulesets-api/delete/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#delete-ruleset">deleting existing rulesets</a> (account and zone rulesets with <code dir="auto">"kind": "root"</code> and <code dir="auto">"kind": "zone"</code>, respectively) and then defining your rulesets configuration in Terraform.</li> </ul> <hr> <div tabindex="-1" class="heading-wrapper level-h2"> <h2 id="deploy-managed-rulesets-at-the-zone-level">Deploy managed rulesets at the zone level</h2><a class="anchor-link" href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#deploy-managed-rulesets-at-the-zone-level"><span aria-hidden="true" class="anchor-icon"> <svg width="16" height="16" viewbox="0 0 24 24"> <path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z" /> </svg></span></a> </div> <p>The following example deploys two managed rulesets to the zone with ID <code dir="auto"><ZONE_ID></code> using Terraform, using a <code dir="auto">cloudflare_ruleset</code> resource with two rules that execute the managed rulesets.</p> <aside aria-label="Note" class="starlight-aside starlight-aside--note"> <p class="starlight-aside__title" aria-hidden="true"> <svg viewbox="0 0 24 24" width="16" height="16" fill="currentColor" class="starlight-aside__icon"> <path d="M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z" /> </svg>Note</p> <div class="starlight-aside__content"> <p>Terraform code snippets below refer to the v4 SDK only.</p> </div> </aside> <div class="expressive-code"> <link rel="stylesheet" href="/_astro/ec.rt9t7.css"> <script type="module" src="/_astro/ec.8zarh.js"></script> <figure class="frame not-content"> <figcaption class="header"></figcaption> <pre data-language="tf"><code> <div class="ec-line"> <div class="code"> <span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># Configure a ruleset at the zone level for the "http_request_firewall_managed" phase</span> </div> </div> <div class="ec-line"> <div class="code"> <span style="--0:#57C78F;--1:#00783C">resource</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EEFFFF;--1:#00268F">"cloudflare_ruleset"</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EEFFFF;--1:#00268F">"zone_level_managed_waf"</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">zone_id</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"<ZONE_ID>"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">name</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"Managed WAF entry point ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">description</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"Zone-level WAF Managed Rules config"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">kind</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"zone"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">phase</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"http_request_firewall_managed"</span> </div> </div> <div class="ec-line"> <div class="code"> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># Execute Cloudflare Managed Ruleset</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">rules</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">ref</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute_cloudflare_managed_ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">description</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">expression</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"true"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">action</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">action_parameters</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">id</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"efb7b8c949ac4650a09736fc376e9aee"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># Execute Cloudflare OWASP Core Ruleset</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">rules</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">ref</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute_cloudflare_owasp_core_ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">description</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"Execute Cloudflare OWASP Core Ruleset on my zone-level phase entry point ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">expression</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"true"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">action</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">action_parameters</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">id</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"4814384a9e5d4991b9815dcfc25d2f1f"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> <span style="--0:#89DDFF;--1:#007474">}</span> </div> </div></code></pre> <div class="copy"> <button title="Copy to clipboard" data-copied="Copied!" data-code="# Configure a ruleset at the zone level for the "http_request_firewall_managed" phaseresource "cloudflare_ruleset" "zone_level_managed_waf" { zone_id = "<ZONE_ID>" name = "Managed WAF entry point ruleset" description = "Zone-level WAF Managed Rules config" kind = "zone" phase = "http_request_firewall_managed" # Execute Cloudflare Managed Ruleset rules { ref = "execute_cloudflare_managed_ruleset" description = "Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset" expression = "true" action = "execute" action_parameters { id = "efb7b8c949ac4650a09736fc376e9aee" } } # Execute Cloudflare OWASP Core Ruleset rules { ref = "execute_cloudflare_owasp_core_ruleset" description = "Execute Cloudflare OWASP Core Ruleset on my zone-level phase entry point ruleset" expression = "true" action = "execute" action_parameters { id = "4814384a9e5d4991b9815dcfc25d2f1f" } }}"> <div></div></button> </div> </figure> </div> <div tabindex="-1" class="heading-wrapper level-h2"> <h2 id="deploy-managed-rulesets-at-the-account-level">Deploy managed rulesets at the account level</h2><a class="anchor-link" href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#deploy-managed-rulesets-at-the-account-level"><span aria-hidden="true" class="anchor-icon"> <svg width="16" height="16" viewbox="0 0 24 24"> <path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z" /> </svg></span></a> </div> <aside aria-label="Notes" class="starlight-aside starlight-aside--note"> <p class="starlight-aside__title" aria-hidden="true"> <svg viewbox="0 0 24 24" width="16" height="16" fill="currentColor" class="starlight-aside__icon"> <path d="M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z" /> </svg>Notes</p> <div class="starlight-aside__content"> <ul> <li><p><a href="https://developers-cloudflare-com.translate.goog/waf/account/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB">Account-level WAF configuration</a> requires an Enterprise plan with a paid add-on.</p></li> <li><p>Managed rulesets deployed at the account level will only apply to incoming traffic of zones on an Enterprise plan. The expression of your <code dir="auto">execute</code> rule must end with <code dir="auto">and cf.zone.plan eq "ENT"</code>.</p></li> </ul> </div> </aside> <p>The following example deploys two managed rulesets to the account with ID <code dir="auto"><ACCOUNT_ID></code> using Terraform, using a <code dir="auto">cloudflare_ruleset</code> resource with two rules that execute the managed rulesets for two hostnames belonging to Enterprise zones.</p> <aside aria-label="Note" class="starlight-aside starlight-aside--note"> <p class="starlight-aside__title" aria-hidden="true"> <svg viewbox="0 0 24 24" width="16" height="16" fill="currentColor" class="starlight-aside__icon"> <path d="M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z" /> </svg>Note</p> <div class="starlight-aside__content"> <p>Terraform code snippets below refer to the v4 SDK only.</p> </div> </aside> <div class="expressive-code"> <figure class="frame not-content"> <figcaption class="header"></figcaption> <pre data-language="tf"><code> <div class="ec-line"> <div class="code"> <span style="--0:#57C78F;--1:#00783C">resource</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EEFFFF;--1:#00268F">"cloudflare_ruleset"</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EEFFFF;--1:#00268F">"account_level_managed_waf"</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">account_id</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"<ACCOUNT_ID>"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">name</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"Managed WAF entry point ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">description</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"Account-level WAF Managed Rules config"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">kind</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"root"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">phase</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"http_request_firewall_managed"</span> </div> </div> <div class="ec-line"> <div class="code"> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># Execute Cloudflare Managed Ruleset</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">rules</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">ref</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute_cloudflare_managed_ruleset_api_store"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">description</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"Execute Cloudflare Managed Ruleset on my account-level phase entry point ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">expression</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"http.host in {</span><span style="--0:#89DDFF;--1:#446E7F">\"</span><span style="--0:#FDDA68;--1:#A84E00">api.example.com</span><span style="--0:#89DDFF;--1:#446E7F">\"</span><span style="--0:#FDDA68;--1:#A84E00"> </span><span style="--0:#89DDFF;--1:#446E7F">\"</span><span style="--0:#FDDA68;--1:#A84E00">store.example.com</span><span style="--0:#89DDFF;--1:#446E7F">\"</span><span style="--0:#FDDA68;--1:#A84E00">} and cf.zone.plan eq </span><span style="--0:#89DDFF;--1:#446E7F">\"</span><span style="--0:#FDDA68;--1:#A84E00">ENT</span><span style="--0:#89DDFF;--1:#446E7F">\"</span><span style="--0:#FDDA68;--1:#A84E00">"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">action</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">action_parameters</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">id</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"efb7b8c949ac4650a09736fc376e9aee"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># Execute Cloudflare OWASP Core Ruleset</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">rules</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">ref</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute_owasp_core_ruleset_api_store"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">description</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"Execute Cloudflare OWASP Core Ruleset on my account-level phase entry point ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">expression</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"http.host in {</span><span style="--0:#89DDFF;--1:#446E7F">\"</span><span style="--0:#FDDA68;--1:#A84E00">api.example.com</span><span style="--0:#89DDFF;--1:#446E7F">\"</span><span style="--0:#FDDA68;--1:#A84E00"> </span><span style="--0:#89DDFF;--1:#446E7F">\"</span><span style="--0:#FDDA68;--1:#A84E00">store.example.com</span><span style="--0:#89DDFF;--1:#446E7F">\"</span><span style="--0:#FDDA68;--1:#A84E00">} and cf.zone.plan eq </span><span style="--0:#89DDFF;--1:#446E7F">\"</span><span style="--0:#FDDA68;--1:#A84E00">ENT</span><span style="--0:#89DDFF;--1:#446E7F">\"</span><span style="--0:#FDDA68;--1:#A84E00">"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">action</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">action_parameters</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">id</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"4814384a9e5d4991b9815dcfc25d2f1f"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> <span style="--0:#89DDFF;--1:#007474">}</span> </div> </div></code></pre> <div class="copy"> <button title="Copy to clipboard" data-copied="Copied!" data-code="resource "cloudflare_ruleset" "account_level_managed_waf" { account_id = "<ACCOUNT_ID>" name = "Managed WAF entry point ruleset" description = "Account-level WAF Managed Rules config" kind = "root" phase = "http_request_firewall_managed" # Execute Cloudflare Managed Ruleset rules { ref = "execute_cloudflare_managed_ruleset_api_store" description = "Execute Cloudflare Managed Ruleset on my account-level phase entry point ruleset" expression = "http.host in {\"api.example.com\" \"store.example.com\"} and cf.zone.plan eq \"ENT\"" action = "execute" action_parameters { id = "efb7b8c949ac4650a09736fc376e9aee" } } # Execute Cloudflare OWASP Core Ruleset rules { ref = "execute_owasp_core_ruleset_api_store" description = "Execute Cloudflare OWASP Core Ruleset on my account-level phase entry point ruleset" expression = "http.host in {\"api.example.com\" \"store.example.com\"} and cf.zone.plan eq \"ENT\"" action = "execute" action_parameters { id = "4814384a9e5d4991b9815dcfc25d2f1f" } }}"> <div></div></button> </div> </figure> </div> <div tabindex="-1" class="heading-wrapper level-h2"> <h2 id="configure-skip-rules">Configure skip rules</h2><a class="anchor-link" href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-skip-rules"><span aria-hidden="true" class="anchor-icon"> <svg width="16" height="16" viewbox="0 0 24 24"> <path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z" /> </svg></span></a> </div> <p>The following example adds two <a href="https://developers-cloudflare-com.translate.goog/waf/managed-rules/waf-exceptions/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB">skip rules</a> (or exceptions) for the Cloudflare Managed Ruleset:</p> <ul> <li>The first rule will skip the execution of the entire Cloudflare Managed Ruleset (with ID <rule-id id="efb7b8c949ac4650a09736fc376e9aee" class="astro-alpa55q7"> <button title="Click to copy the full ID" class="px-0 astro-alpa55q7"> <code class="flex astro-alpa55q7"> ...376e9aee </code> </button> </rule-id> <script type="module" src="/_astro/RuleID.astro_astro_type_script_index_0_lang.D0trbLMw.js"></script>) for specific URLs, according to the rule expression.</li> <li>The second rule will skip the execution of two rules belonging to the Cloudflare Managed Ruleset for specific URLs, according to the rule expression.</li> </ul> <p>Add the two skip rules to the <code dir="auto">cloudflare_ruleset</code> resource before the rule that deploys the Cloudflare Managed Ruleset:</p> <aside aria-label="Note" class="starlight-aside starlight-aside--note"> <p class="starlight-aside__title" aria-hidden="true"> <svg viewbox="0 0 24 24" width="16" height="16" fill="currentColor" class="starlight-aside__icon"> <path d="M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z" /> </svg>Note</p> <div class="starlight-aside__content"> <p>Terraform code snippets below refer to the v4 SDK only.</p> </div> </aside> <div class="expressive-code"> <figure class="frame not-content"> <figcaption class="header"></figcaption> <pre data-language="tf"><code> <div class="ec-line"> <div class="code"> <span style="--0:#57C78F;--1:#00783C">resource</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EEFFFF;--1:#00268F">"cloudflare_ruleset"</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EEFFFF;--1:#00268F">"zone_level_managed_waf"</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># (...)</span> </div> </div> <div class="ec-line"> <div class="code"> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#bdbdb9;--0fs:italic;--1:#575c5e;--1fs:italic"># Skip execution of the entire Cloudflare Managed Ruleset for specific URLs</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#6fcf9f;--1:#006935">rules</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#89DDFF;--1:#006666">{</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">ref</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"skip_cloudflare_managed_ruleset_example_com"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">description</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"Skip Cloudflare Managed Ruleset"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">expression</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"(http.request.uri.path eq </span><span style="--0:#89DDFF;--1:#3c606f">\"</span><span style="--0:#FDDA68;--1:#934400">/status</span><span style="--0:#89DDFF;--1:#3c606f">\"</span><span style="--0:#FDDA68;--1:#934400"> and http.request.uri.query contains </span><span style="--0:#89DDFF;--1:#3c606f">\"</span><span style="--0:#FDDA68;--1:#934400">skip=rulesets</span><span style="--0:#89DDFF;--1:#3c606f">\"</span><span style="--0:#FDDA68;--1:#934400">)"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">action</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"skip"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#6fcf9f;--1:#006935">action_parameters</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#89DDFF;--1:#006666">{</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">rulesets</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#89DDFF;--1:#006666">[</span><span style="--0:#FDDA68;--1:#934400">"efb7b8c949ac4650a09736fc376e9aee"</span><span style="--0:#89DDFF;--1:#006666">]</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#006666">}</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#006666">}</span> </div> </div> <div class="ec-line"> <div class="code"> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#bdbdb9;--0fs:italic;--1:#575c5e;--1fs:italic"># Skip execution of two rules in the Cloudflare Managed Ruleset for specific URLs</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#6fcf9f;--1:#006935">rules</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#89DDFF;--1:#006666">{</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">ref</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"skip_wordpress_sqli_rules_example_com"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">description</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"Skip WordPress and SQLi rules"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">expression</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"(http.request.uri.path eq </span><span style="--0:#89DDFF;--1:#3c606f">\"</span><span style="--0:#FDDA68;--1:#934400">/status</span><span style="--0:#89DDFF;--1:#3c606f">\"</span><span style="--0:#FDDA68;--1:#934400"> and http.request.uri.query contains </span><span style="--0:#89DDFF;--1:#3c606f">\"</span><span style="--0:#FDDA68;--1:#934400">skip=rules</span><span style="--0:#89DDFF;--1:#3c606f">\"</span><span style="--0:#FDDA68;--1:#934400">)"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">action</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"skip"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#6fcf9f;--1:#006935">action_parameters</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#89DDFF;--1:#006666">{</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">rules</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#89DDFF;--1:#006666">{</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#bdbdb9;--0fs:italic;--1:#575c5e;--1fs:italic"># Format: "<RULESET_ID>" = "<RULE_ID_1>,<RULE_ID_2>,..."</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#FDDA68;--1:#934400">"efb7b8c949ac4650a09736fc376e9aee"</span><span style="--0:#EEFFFF;--1:#575c5e"> = </span><span style="--0:#FDDA68;--1:#934400">"5de7edfa648c4d6891dc3e7f84534ffa,e3a567afc347477d9702d9047e97d760"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#006666">}</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#006666">}</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#006666">}</span> </div> </div> <div class="ec-line"> <div class="code"> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># Execute Cloudflare Managed Ruleset</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">rules</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">ref</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute_cloudflare_managed_ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">description</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">expression</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"true"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">action</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">action_parameters</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">id</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"efb7b8c949ac4650a09736fc376e9aee"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># (...)</span> </div> </div> <div class="ec-line"> <div class="code"> <span style="--0:#89DDFF;--1:#007474">}</span> </div> </div></code></pre> <div class="copy"> <button title="Copy to clipboard" data-copied="Copied!" data-code="resource "cloudflare_ruleset" "zone_level_managed_waf" { # (...) # Skip execution of the entire Cloudflare Managed Ruleset for specific URLs rules { ref = "skip_cloudflare_managed_ruleset_example_com" description = "Skip Cloudflare Managed Ruleset" expression = "(http.request.uri.path eq \"/status\" and http.request.uri.query contains \"skip=rulesets\")" action = "skip" action_parameters { rulesets = ["efb7b8c949ac4650a09736fc376e9aee"] } } # Skip execution of two rules in the Cloudflare Managed Ruleset for specific URLs rules { ref = "skip_wordpress_sqli_rules_example_com" description = "Skip WordPress and SQLi rules" expression = "(http.request.uri.path eq \"/status\" and http.request.uri.query contains \"skip=rules\")" action = "skip" action_parameters { rules = { # Format: "<RULESET_ID>" = "<RULE_ID_1>,<RULE_ID_2>,..." "efb7b8c949ac4650a09736fc376e9aee" = "5de7edfa648c4d6891dc3e7f84534ffa,e3a567afc347477d9702d9047e97d760" } } } # Execute Cloudflare Managed Ruleset rules { ref = "execute_cloudflare_managed_ruleset" description = "Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset" expression = "true" action = "execute" action_parameters { id = "efb7b8c949ac4650a09736fc376e9aee" } } # (...)}"> <div></div></button> </div> </figure> </div> <aside aria-label="Important" class="starlight-aside starlight-aside--caution"> <p class="starlight-aside__title" aria-hidden="true"> <svg viewbox="0 0 24 24" width="16" height="16" fill="currentColor" class="starlight-aside__icon"> <path d="M12 16C11.8022 16 11.6089 16.0587 11.4444 16.1686C11.28 16.2784 11.1518 16.4346 11.0761 16.6173C11.0004 16.8001 10.9806 17.0011 11.0192 17.1951C11.0578 17.3891 11.153 17.5673 11.2929 17.7071C11.4327 17.847 11.6109 17.9422 11.8049 17.9808C11.9989 18.0194 12.2 17.9996 12.3827 17.9239C12.5654 17.8482 12.7216 17.72 12.8315 17.5556C12.9413 17.3911 13 17.1978 13 17C13 16.7348 12.8946 16.4805 12.7071 16.2929C12.5196 16.1054 12.2652 16 12 16ZM22.67 17.47L14.62 3.47003C14.3598 3.00354 13.9798 2.61498 13.5192 2.3445C13.0586 2.07401 12.5341 1.9314 12 1.9314C11.4659 1.9314 10.9414 2.07401 10.4808 2.3445C10.0202 2.61498 9.64019 3.00354 9.38 3.47003L1.38 17.47C1.11079 17.924 0.966141 18.441 0.960643 18.9688C0.955144 19.4966 1.089 20.0166 1.34868 20.4761C1.60837 20.9356 1.9847 21.3185 2.43968 21.5861C2.89466 21.8536 3.41218 21.9964 3.94 22H20.06C20.5921 22.0053 21.1159 21.8689 21.5779 21.6049C22.0399 21.341 22.4234 20.9589 22.689 20.4978C22.9546 20.0368 23.0928 19.5134 23.0895 18.9814C23.0862 18.4493 22.9414 17.9277 22.67 17.47ZM20.94 19.47C20.8523 19.626 20.7245 19.7556 20.5697 19.8453C20.4149 19.935 20.2389 19.9815 20.06 19.98H3.94C3.76111 19.9815 3.5851 19.935 3.43032 19.8453C3.27553 19.7556 3.14765 19.626 3.06 19.47C2.97223 19.318 2.92602 19.1456 2.92602 18.97C2.92602 18.7945 2.97223 18.622 3.06 18.47L11.06 4.47003C11.1439 4.30623 11.2714 4.16876 11.4284 4.07277C11.5855 3.97678 11.766 3.92599 11.95 3.92599C12.134 3.92599 12.3145 3.97678 12.4716 4.07277C12.6286 4.16876 12.7561 4.30623 12.84 4.47003L20.89 18.47C20.9892 18.6199 21.0462 18.7937 21.055 18.9732C21.0638 19.1527 21.0241 19.3312 20.94 19.49V19.47ZM12 8.00003C11.7348 8.00003 11.4804 8.10538 11.2929 8.29292C11.1054 8.48046 11 8.73481 11 9.00003V13C11 13.2652 11.1054 13.5196 11.2929 13.7071C11.4804 13.8947 11.7348 14 12 14C12.2652 14 12.5196 13.8947 12.7071 13.7071C12.8946 13.5196 13 13.2652 13 13V9.00003C13 8.73481 12.8946 8.48046 12.7071 8.29292C12.5196 8.10538 12.2652 8.00003 12 8.00003Z" /> </svg>Important</p> <div class="starlight-aside__content"> <p>Ensure that you place the skip rules <strong>before</strong> the rule that executes the managed ruleset (or some of its rules) that you wish to skip, as in the previous example.</p> </div> </aside> <div tabindex="-1" class="heading-wrapper level-h2"> <h2 id="configure-overrides">Configure overrides</h2><a class="anchor-link" href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-overrides"><span aria-hidden="true" class="anchor-icon"> <svg width="16" height="16" viewbox="0 0 24 24"> <path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z" /> </svg></span></a> </div> <p>The following example adds three <a href="https://developers-cloudflare-com.translate.goog/ruleset-engine/managed-rulesets/override-managed-ruleset/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB">overrides</a> for the Cloudflare Managed Ruleset:</p> <ul> <li>A rule override for rule with ID <code dir="auto">5de7edfa648c4d6891dc3e7f84534ffa</code> setting the action to <code dir="auto">log</code>.</li> <li>A rule override for rule with ID <code dir="auto">75a0060762034a6cb663fd51a02344cb</code> disabling the rule.</li> <li>A tag override for the <code dir="auto">wordpress</code> tag, setting the action of all the rules with this tag to <code dir="auto">js_challenge</code>.</li> </ul> <aside aria-label="Important" class="starlight-aside starlight-aside--caution"> <p class="starlight-aside__title" aria-hidden="true"> <svg viewbox="0 0 24 24" width="16" height="16" fill="currentColor" class="starlight-aside__icon"> <path d="M12 16C11.8022 16 11.6089 16.0587 11.4444 16.1686C11.28 16.2784 11.1518 16.4346 11.0761 16.6173C11.0004 16.8001 10.9806 17.0011 11.0192 17.1951C11.0578 17.3891 11.153 17.5673 11.2929 17.7071C11.4327 17.847 11.6109 17.9422 11.8049 17.9808C11.9989 18.0194 12.2 17.9996 12.3827 17.9239C12.5654 17.8482 12.7216 17.72 12.8315 17.5556C12.9413 17.3911 13 17.1978 13 17C13 16.7348 12.8946 16.4805 12.7071 16.2929C12.5196 16.1054 12.2652 16 12 16ZM22.67 17.47L14.62 3.47003C14.3598 3.00354 13.9798 2.61498 13.5192 2.3445C13.0586 2.07401 12.5341 1.9314 12 1.9314C11.4659 1.9314 10.9414 2.07401 10.4808 2.3445C10.0202 2.61498 9.64019 3.00354 9.38 3.47003L1.38 17.47C1.11079 17.924 0.966141 18.441 0.960643 18.9688C0.955144 19.4966 1.089 20.0166 1.34868 20.4761C1.60837 20.9356 1.9847 21.3185 2.43968 21.5861C2.89466 21.8536 3.41218 21.9964 3.94 22H20.06C20.5921 22.0053 21.1159 21.8689 21.5779 21.6049C22.0399 21.341 22.4234 20.9589 22.689 20.4978C22.9546 20.0368 23.0928 19.5134 23.0895 18.9814C23.0862 18.4493 22.9414 17.9277 22.67 17.47ZM20.94 19.47C20.8523 19.626 20.7245 19.7556 20.5697 19.8453C20.4149 19.935 20.2389 19.9815 20.06 19.98H3.94C3.76111 19.9815 3.5851 19.935 3.43032 19.8453C3.27553 19.7556 3.14765 19.626 3.06 19.47C2.97223 19.318 2.92602 19.1456 2.92602 18.97C2.92602 18.7945 2.97223 18.622 3.06 18.47L11.06 4.47003C11.1439 4.30623 11.2714 4.16876 11.4284 4.07277C11.5855 3.97678 11.766 3.92599 11.95 3.92599C12.134 3.92599 12.3145 3.97678 12.4716 4.07277C12.6286 4.16876 12.7561 4.30623 12.84 4.47003L20.89 18.47C20.9892 18.6199 21.0462 18.7937 21.055 18.9732C21.0638 19.1527 21.0241 19.3312 20.94 19.49V19.47ZM12 8.00003C11.7348 8.00003 11.4804 8.10538 11.2929 8.29292C11.1054 8.48046 11 8.73481 11 9.00003V13C11 13.2652 11.1054 13.5196 11.2929 13.7071C11.4804 13.8947 11.7348 14 12 14C12.2652 14 12.5196 13.8947 12.7071 13.7071C12.8946 13.5196 13 13.2652 13 13V9.00003C13 8.73481 12.8946 8.48046 12.7071 8.29292C12.5196 8.10538 12.2652 8.00003 12 8.00003Z" /> </svg>Important</p> <div class="starlight-aside__content"> <p>Ruleset overrides and tag overrides apply to both existing and <strong>future</strong> rules in the managed ruleset. If you want to override existing rules only, you must use rule overrides.</p> </div> </aside> <p>The following configuration includes the three overrides in the rule that executes the Cloudflare Managed Ruleset:</p> <aside aria-label="Note" class="starlight-aside starlight-aside--note"> <p class="starlight-aside__title" aria-hidden="true"> <svg viewbox="0 0 24 24" width="16" height="16" fill="currentColor" class="starlight-aside__icon"> <path d="M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z" /> </svg>Note</p> <div class="starlight-aside__content"> <p>Terraform code snippets below refer to the v4 SDK only.</p> </div> </aside> <div class="expressive-code"> <figure class="frame not-content"> <figcaption class="header"></figcaption> <pre data-language="tf"><code> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># (...)</span> </div> </div> <div class="ec-line"> <div class="code"> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># Execute Cloudflare Managed Ruleset</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">rules</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">ref</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute_cloudflare_managed_ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">description</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">expression</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"true"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">action</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">action_parameters</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">id</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"efb7b8c949ac4650a09736fc376e9aee"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#6fcf9f;--1:#006935">overrides</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#89DDFF;--1:#006666">{</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#6fcf9f;--1:#006935">rules</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#89DDFF;--1:#006666">{</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">id</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"5de7edfa648c4d6891dc3e7f84534ffa"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">action</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"log"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">enabled</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#32008F">true</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#006666">}</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#6fcf9f;--1:#006935">rules</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#89DDFF;--1:#006666">{</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">id</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"75a0060762034a6cb663fd51a02344cb"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">enabled</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#32008F">false</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#006666">}</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#6fcf9f;--1:#006935">categories</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#89DDFF;--1:#006666">{</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">category</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"wordpress"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">action</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"js_challenge"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">enabled</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#32008F">true</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#006666">}</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#006666">}</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># (...)</span> </div> </div></code></pre> <div class="copy"> <button title="Copy to clipboard" data-copied="Copied!" data-code=" # (...) # Execute Cloudflare Managed Ruleset rules { ref = "execute_cloudflare_managed_ruleset" description = "Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset" expression = "true" action = "execute" action_parameters { id = "efb7b8c949ac4650a09736fc376e9aee" overrides { rules { id = "5de7edfa648c4d6891dc3e7f84534ffa" action = "log" enabled = true } rules { id = "75a0060762034a6cb663fd51a02344cb" enabled = false } categories { category = "wordpress" action = "js_challenge" enabled = true } } } } # (...)"> <div></div></button> </div> </figure> </div> <div tabindex="-1" class="heading-wrapper level-h2"> <h2 id="configure-payload-logging">Configure payload logging</h2><a class="anchor-link" href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-payload-logging"><span aria-hidden="true" class="anchor-icon"> <svg width="16" height="16" viewbox="0 0 24 24"> <path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z" /> </svg></span></a> </div> <p>This example enables <a href="https://developers-cloudflare-com.translate.goog/waf/managed-rules/payload-logging/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB">payload logging</a> for matched rules of the Cloudflare Managed Ruleset, setting the public key used to encrypt the logged payload.</p> <p>Building upon the rule that deploys the Cloudflare Managed Ruleset, the following rule configuration adds the <code dir="auto">matched_data</code> object with the public key used to encrypt the payload:</p> <aside aria-label="Note" class="starlight-aside starlight-aside--note"> <p class="starlight-aside__title" aria-hidden="true"> <svg viewbox="0 0 24 24" width="16" height="16" fill="currentColor" class="starlight-aside__icon"> <path d="M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z" /> </svg>Note</p> <div class="starlight-aside__content"> <p>Terraform code snippets below refer to the v4 SDK only.</p> </div> </aside> <div class="expressive-code"> <figure class="frame not-content"> <figcaption class="header"></figcaption> <pre data-language="tf"><code> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># (...)</span> </div> </div> <div class="ec-line"> <div class="code"> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># Execute Cloudflare Managed Ruleset</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">rules</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">ref</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute_cloudflare_managed_ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">description</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">expression</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"true"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">action</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">action_parameters</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">id</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"efb7b8c949ac4650a09736fc376e9aee"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#6fcf9f;--1:#006935">matched_data</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#89DDFF;--1:#006666">{</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">public_key</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"Ycig/Zr/pZmklmFUN99nr+taURlYItL91g+NcHGYpB8="</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#006666">}</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># (...)</span> </div> </div></code></pre> <div class="copy"> <button title="Copy to clipboard" data-copied="Copied!" data-code=" # (...) # Execute Cloudflare Managed Ruleset rules { ref = "execute_cloudflare_managed_ruleset" description = "Execute Cloudflare Managed Ruleset on my zone-level phase entry point ruleset" expression = "true" action = "execute" action_parameters { id = "efb7b8c949ac4650a09736fc376e9aee" matched_data { public_key = "Ycig/Zr/pZmklmFUN99nr+taURlYItL91g+NcHGYpB8=" } } } # (...)"> <div></div></button> </div> </figure> </div> <div tabindex="-1" class="heading-wrapper level-h2"> <h2 id="configure-the-owasp-paranoia-level-score-threshold-and-action">Configure the OWASP paranoia level, score threshold, and action</h2><a class="anchor-link" href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/waf-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB#configure-the-owasp-paranoia-level-score-threshold-and-action"><span aria-hidden="true" class="anchor-icon"> <svg width="16" height="16" viewbox="0 0 24 24"> <path fill="currentcolor" d="m12.11 15.39-3.88 3.88a2.52 2.52 0 0 1-3.5 0 2.47 2.47 0 0 1 0-3.5l3.88-3.88a1 1 0 0 0-1.42-1.42l-3.88 3.89a4.48 4.48 0 0 0 6.33 6.33l3.89-3.88a1 1 0 1 0-1.42-1.42Zm8.58-12.08a4.49 4.49 0 0 0-6.33 0l-3.89 3.88a1 1 0 0 0 1.42 1.42l3.88-3.88a2.52 2.52 0 0 1 3.5 0 2.47 2.47 0 0 1 0 3.5l-3.88 3.88a1 1 0 1 0 1.42 1.42l3.88-3.89a4.49 4.49 0 0 0 0-6.33ZM8.83 15.17a1 1 0 0 0 1.1.22 1 1 0 0 0 .32-.22l4.92-4.92a1 1 0 0 0-1.42-1.42l-4.92 4.92a1 1 0 0 0 0 1.42Z" /> </svg></span></a> </div> <p>The OWASP managed ruleset supports the following configurations:</p> <ul> <li><p>Enable all the rules up to a specific paranoia level by creating tag overrides that disable all the rules associated with higher paranoia levels.</p></li> <li><p>Set the action to perform when the calculated threat score is greater than the score threshold by creating a rule override for the last rule in the Cloudflare OWASP Core Ruleset (rule with ID <rule-id id="6179ae15870a4bb7b2d480d4843b323c" class="astro-alpa55q7"> <button title="Click to copy the full ID" class="px-0 astro-alpa55q7"> <code class="flex astro-alpa55q7"> ...843b323c </code> </button> </rule-id> ), and including the <code dir="auto">action</code> property.</p></li> <li><p>Set the score threshold by creating a rule override for the last rule in the Cloudflare OWASP Core Ruleset (rule with ID <rule-id id="6179ae15870a4bb7b2d480d4843b323c" class="astro-alpa55q7"> <button title="Click to copy the full ID" class="px-0 astro-alpa55q7"> <code class="flex astro-alpa55q7"> ...843b323c </code> </button> </rule-id> ), and including the <code dir="auto">score_threshold</code> property.</p></li> </ul> <p>For more information on the available configuration values, refer to the <a href="https://developers-cloudflare-com.translate.goog/waf/managed-rules/reference/owasp-core-ruleset/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB">Cloudflare OWASP Core Ruleset</a> page in the WAF documentation.</p> <p>The following example rule of a <code dir="auto">cloudflare_ruleset</code> Terraform resource performs the following configuration:</p> <ul> <li>Deploys the OWASP managed ruleset.</li> <li>Sets the OWASP paranoia level to <em>PL2</em>.</li> <li>Sets the score threshold to <code dir="auto">60</code> (<em>Low</em>).</li> <li>Sets the ruleset action to <code dir="auto">log</code>.</li> </ul> <aside aria-label="Note" class="starlight-aside starlight-aside--note"> <p class="starlight-aside__title" aria-hidden="true"> <svg viewbox="0 0 24 24" width="16" height="16" fill="currentColor" class="starlight-aside__icon"> <path d="M12 11C11.7348 11 11.4804 11.1054 11.2929 11.2929C11.1054 11.4804 11 11.7348 11 12V16C11 16.2652 11.1054 16.5196 11.2929 16.7071C11.4804 16.8946 11.7348 17 12 17C12.2652 17 12.5196 16.8946 12.7071 16.7071C12.8946 16.5196 13 16.2652 13 16V12C13 11.7348 12.8946 11.4804 12.7071 11.2929C12.5196 11.1054 12.2652 11 12 11ZM12.38 7.08C12.1365 6.97998 11.8635 6.97998 11.62 7.08C11.4973 7.12759 11.3851 7.19896 11.29 7.29C11.2017 7.3872 11.1306 7.49882 11.08 7.62C11.024 7.73868 10.9966 7.86882 11 8C10.9992 8.13161 11.0245 8.26207 11.0742 8.38391C11.124 8.50574 11.1973 8.61656 11.29 8.71C11.3872 8.79833 11.4988 8.86936 11.62 8.92C11.7715 8.98224 11.936 9.00632 12.099 8.99011C12.2619 8.97391 12.4184 8.91792 12.5547 8.82707C12.691 8.73622 12.8029 8.61328 12.8805 8.46907C12.9582 8.32486 12.9992 8.16378 13 8C12.9963 7.73523 12.8927 7.48163 12.71 7.29C12.6149 7.19896 12.5028 7.12759 12.38 7.08ZM12 2C10.0222 2 8.08879 2.58649 6.4443 3.6853C4.79981 4.78412 3.51809 6.3459 2.76121 8.17317C2.00433 10.0004 1.8063 12.0111 2.19215 13.9509C2.578 15.8907 3.53041 17.6725 4.92894 19.0711C6.32746 20.4696 8.10929 21.422 10.0491 21.8079C11.9889 22.1937 13.9996 21.9957 15.8268 21.2388C17.6541 20.4819 19.2159 19.2002 20.3147 17.5557C21.4135 15.9112 22 13.9778 22 12C22 10.6868 21.7413 9.38642 21.2388 8.17317C20.7363 6.95991 19.9997 5.85752 19.0711 4.92893C18.1425 4.00035 17.0401 3.26375 15.8268 2.7612C14.6136 2.25866 13.3132 2 12 2ZM12 20C10.4178 20 8.87104 19.5308 7.55544 18.6518C6.23985 17.7727 5.21447 16.5233 4.60897 15.0615C4.00347 13.5997 3.84504 11.9911 4.15372 10.4393C4.4624 8.88743 5.22433 7.46197 6.34315 6.34315C7.46197 5.22433 8.88743 4.4624 10.4393 4.15372C11.9911 3.84504 13.5997 4.00346 15.0615 4.60896C16.5233 5.21447 17.7727 6.23984 18.6518 7.55544C19.5308 8.87103 20 10.4177 20 12C20 14.1217 19.1572 16.1566 17.6569 17.6569C16.1566 19.1571 14.1217 20 12 20Z" /> </svg>Note</p> <div class="starlight-aside__content"> <p>Terraform code snippets below refer to the v4 SDK only.</p> </div> </aside> <div class="expressive-code"> <figure class="frame not-content"> <figcaption class="header"></figcaption> <pre data-language="tf"><code> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># (...)</span> </div> </div> <div class="ec-line"> <div class="code"> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># Execute Cloudflare OWASP Core Ruleset</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">rules</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">ref</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute_owasp_core_ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">description</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"Execute Cloudflare OWASP Core Ruleset"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">expression</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"true"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">action</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"execute"</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#57C78F;--1:#00783C">action_parameters</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#89DDFF;--1:#007474">{</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">id</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#EE9080;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#62676A"> </span><span style="--0:#FDDA68;--1:#A84E00">"4814384a9e5d4991b9815dcfc25d2f1f"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#6fcf9f;--1:#006935">overrides</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#89DDFF;--1:#006666">{</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#bdbdb9;--0fs:italic;--1:#575c5e;--1fs:italic"># By default, all PL1 to PL4 rules are enabled.</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#bdbdb9;--0fs:italic;--1:#575c5e;--1fs:italic"># Set the paranoia level to PL2 by disabling rules with</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#bdbdb9;--0fs:italic;--1:#575c5e;--1fs:italic"># tags "paranoia-level-3" and "paranoia-level-4".</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#6fcf9f;--1:#006935">categories</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#89DDFF;--1:#006666">{</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">category</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"paranoia-level-3"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">enabled</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#32008F">false</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#006666">}</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#6fcf9f;--1:#006935">categories</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#89DDFF;--1:#006666">{</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">category</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"paranoia-level-4"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">enabled</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#32008F">false</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#006666">}</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#6fcf9f;--1:#006935">rules</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#89DDFF;--1:#006666">{</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">id</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"6179ae15870a4bb7b2d480d4843b323c"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">action</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#FDDA68;--1:#934400">"log"</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#D5D7D8;--1:#8F1500">score_threshold</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#f2ab9f;--1:#8F1500">=</span><span style="--0:#EEFFFF;--1:#575c5e"> </span><span style="--0:#a8bbf1;--1:#00268F">60</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#006666">}</span> </div> </div> <div class="ec-line highlight mark"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#006666">}</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#89DDFF;--1:#007474">}</span> </div> </div> <div class="ec-line"> <div class="code"> </div> </div> <div class="ec-line"> <div class="code"> <span class="indent"> </span><span style="--0:#A9A9A5;--0fs:italic;--1:#62676A;--1fs:italic"># (...)</span> </div> </div></code></pre> <div class="copy"> <button title="Copy to clipboard" data-copied="Copied!" data-code=" # (...) # Execute Cloudflare OWASP Core Ruleset rules { ref = "execute_owasp_core_ruleset" description = "Execute Cloudflare OWASP Core Ruleset" expression = "true" action = "execute" action_parameters { id = "4814384a9e5d4991b9815dcfc25d2f1f" overrides { # By default, all PL1 to PL4 rules are enabled. # Set the paranoia level to PL2 by disabling rules with # tags "paranoia-level-3" and "paranoia-level-4". categories { category = "paranoia-level-3" enabled = false } categories { category = "paranoia-level-4" enabled = false } rules { id = "6179ae15870a4bb7b2d480d4843b323c" action = "log" score_threshold = 60 } } } } # (...)"> <div></div></button> </div> </figure> </div> </div> <div class="astro-fxeopwe4"> <div class="feedback-prompt astro-fxeopwe4"> <astro-island uid="ZcQfTO" prefix="r0" component-url="/_astro/FeedbackPrompt.sIVdSYEF.js" component-export="default" renderer-url="/_astro/client.BUsrUfVi.js" props="{}" ssr client="idle" opts="{"name":"FeedbackPrompt","value":true}" await-children> <div> <h2>Was this helpful?</h2><button class="cursor-pointer bg-transparent"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewbox="0 0 24 24" class="text-2xl text-sl hover:text-accent" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"> <path fill="none" d="M0 0h24v24H0V0zm0 0h24v24H0V0z" /><path d="M9 21h9c.83 0 1.54-.5 1.84-1.22l3.02-7.05c.09-.23.14-.47.14-.73v-2c0-1.1-.9-2-2-2h-6.31l.95-4.57.03-.32c0-.41-.17-.79-.44-1.06L14.17 1 7.58 7.59C7.22 7.95 7 8.45 7 9v10c0 1.1.9 2 2 2zM9 9l4.34-4.34L12 10h9v2l-3 7H9V9zM1 9h4v12H1z" /> </svg></button><button class="cursor-pointer bg-transparent"> <svg stroke="currentColor" fill="currentColor" stroke-width="0" viewbox="0 0 24 24" class="text-2xl text-sl hover:text-accent" height="1em" width="1em" xmlns="http://www.w3.org/2000/svg"> <path fill="none" d="M0 0h24v24H0V0zm0 0h24v24H0V0z" /><path d="M15 3H6c-.83 0-1.54.5-1.84 1.22l-3.02 7.05c-.09.23-.14.47-.14.73v2c0 1.1.9 2 2 2h6.31l-.95 4.57-.03.32c0 .41.17.79.44 1.06L9.83 23l6.59-6.59c.36-.36.58-.86.58-1.41V5c0-1.1-.9-2-2-2zm0 12-4.34 4.34L12 14H3v-2l3-7h9v10zm4-12h4v12h-4z" /> </svg></button> </div><!--astro:end--> </astro-island> </div> <footer class="sl-flex astro-3yyafb3n"> <div class="meta sl-flex astro-3yyafb3n"><a href="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://github.com/cloudflare/cloudflare-docs/edit/production/src/content/docs/terraform/additional-configurations/waf-managed-rulesets.mdx" class="sl-flex print:hidden astro-eez2twj6"> <svg aria-hidden="true" class="astro-eez2twj6 astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.2em;"> <path d="M22 7.24a1 1 0 0 0-.29-.71l-4.24-4.24a1 1 0 0 0-1.1-.22 1 1 0 0 0-.32.22l-2.83 2.83L2.29 16.05a1 1 0 0 0-.29.71V21a1 1 0 0 0 1 1h4.24a1 1 0 0 0 .76-.29l10.87-10.93L21.71 8c.1-.1.17-.2.22-.33a1 1 0 0 0 0-.24v-.14l.07-.05ZM6.83 20H4v-2.83l9.93-9.93 2.83 2.83L6.83 20ZM18.17 8.66l-2.83-2.83 1.42-1.41 2.82 2.82-1.41 1.42Z" /> </svg> Edit page</a> <p>Last updated: <time datetime="2025-02-04T15:44:45.000Z">Feb 4, 2025</time></p> </div> <div class="pagination-links print:hidden astro-u2l5gyhi" dir="ltr"><a href="https://developers-cloudflare-com.translate.goog/terraform/tutorial/revert-configuration/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" rel="prev" class="astro-u2l5gyhi"> <svg aria-hidden="true" class="astro-u2l5gyhi astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"> <path d="M17 11H9.41l3.3-3.29a1.004 1.004 0 1 0-1.42-1.42l-5 5a1 1 0 0 0-.21.33 1 1 0 0 0 0 .76 1 1 0 0 0 .21.33l5 5a1.002 1.002 0 0 0 1.639-.325 1 1 0 0 0-.219-1.095L9.41 13H17a1 1 0 0 0 0-2Z" /> </svg><span class="astro-u2l5gyhi"> Previous <br class="astro-u2l5gyhi"><span class="link-title astro-u2l5gyhi">6 – Revert configuration</span> </span> </a> <a href="https://developers-cloudflare-com.translate.goog/terraform/additional-configurations/ddos-managed-rulesets/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" rel="next" class="astro-u2l5gyhi"> <svg aria-hidden="true" class="astro-u2l5gyhi astro-c6vsoqas" width="16" height="16" viewbox="0 0 24 24" fill="currentColor" style="--sl-icon-size: 1.5rem;"> <path d="M17.92 11.62a1.001 1.001 0 0 0-.21-.33l-5-5a1.003 1.003 0 1 0-1.42 1.42l3.3 3.29H7a1 1 0 0 0 0 2h7.59l-3.3 3.29a1.002 1.002 0 0 0 .325 1.639 1 1 0 0 0 1.095-.219l5-5a1 1 0 0 0 .21-.33 1 1 0 0 0 0-.76Z" /> </svg><span class="astro-u2l5gyhi"> Next <br class="astro-u2l5gyhi"><span class="link-title astro-u2l5gyhi">DDoS managed rulesets</span> </span> </a> </div> </footer> <div id="footer-links" class="mt-6 flex flex-wrap items-center space-x-4 astro-fxeopwe4"> <a href="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://dash.cloudflare.com" class="text-xs text-black decoration-accent astro-fxeopwe4"><span class="astro-fxeopwe4">Cloudflare Dashboard</span></a><a href="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://discord.cloudflare.com" class="text-xs text-black decoration-accent astro-fxeopwe4"><span class="astro-fxeopwe4">Discord</span></a><a href="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://community.cloudflare.com" class="text-xs text-black decoration-accent astro-fxeopwe4"><span class="astro-fxeopwe4">Community</span></a><a href="https://translate.google.com/website?sl=pl&tl=en&hl=en-GB&u=https://www.cloudflare.com/learning/" class="text-xs text-black decoration-accent astro-fxeopwe4"><span class="astro-fxeopwe4">Learning Center</span></a><a href="https://developers-cloudflare-com.translate.goog/support/contacting-cloudflare-support/?_x_tr_sl=pl&_x_tr_tl=en&_x_tr_hl=en-GB" class="text-xs text-black decoration-accent astro-fxeopwe4"><span class="astro-fxeopwe4">Support Portal</span></a> <div class="text-xs text-black [&>button]:underline [&>button]:decoration-accent astro-fxeopwe4"> <script src="https://ot.www.cloudflare.com/public/vendor/onetrust/scripttemplates/otSDKStub.js" type="text/javascript" charset="UTF-8" data-domain-script="b1e05d49-f072-4bae-9116-bdb78af15448"></script> <script type="text/javascript"> // eslint-disable-next-line @typescript-eslint/no-unused-vars function OptanonWrapper() {} </script><!-- OneTrust Cookies Settings button start --><button id="ot-sdk-btn" class="ot-sdk-show-settings astro-hwxmvrii">Cookie Settings</button> <!-- OneTrust Cookies Settings button end --> </div> </div> </div> </div> </div> </main> </div> </div> </div> </div> <script defer src="https://static.cloudflareinsights.com/beacon.min.js/vcd15cbe7772f49c399c6a5babf22c1241717689176015" integrity="sha512-ZpsOmlRQV6y907TI0dKBHq9Md29nnaEIPlkf84rnaERnq6zvWvPUqr2ft8M1aS28oN72PdrCzSjY4U6VaAw1EQ==" data-cf-beacon="{"rayId":"9157983f6d476597","version":"2025.1.0","serverTiming":{"name":{"cfExtPri":true,"cfL4":true,"cfSpeedBrain":true,"cfCacheStatus":true}},"token":"0589387b238e41af8aafea4d88cd2c64","b":1}" crossorigin="anonymous"></script> <script>function gtElInit() {var lib = new google.translate.TranslateService();lib.translatePage('pl', 'en', function () {});}</script> <script src="https://translate.google.com/translate_a/element.js?cb=gtElInit&hl=en-GB&client=wt" type="text/javascript"></script> </body> </html>