マネージドルールセットは、ゾーンレベルまたはアカウントレベルでデプロイできます。フェーズにマネージドルールセットをデプロイするには、Rulesets API を使います。
Terraform を使う場合は、詳細を Terraform による WAF Managed Rules の設定 で参照してください。
Cloudflare ダッシュボードを使う場合は、次のページを参照してください。
次の手順で、ゾーンレベルのフェーズにマネージドルールセットをデプロイします。
- ゾーン ID を取得します。
- List account rulesets 操作を呼び出して、利用可能なマネージドルールセットを取得します。マネージドルールセットはアカウントレベルにありますが、ゾーンにデプロイできます。デプロイしたいマネージドルールセットのルールセット ID を探します。
- マネージドルールセットをデプロイする フェーズ を特定します。マネージドルールセットが、デプロイ先と同じフェーズに属することを確認します。
- マネージドルールセットを実行するルールを、ゾーンレベルのフェーズ エントリポイントルールセット に追加します。この手順の詳細は、次の例を参照してください。
次の例では、指定したゾーン($ZONE_ID)の http_request_firewall_managed フェーズに Cloudflare Managed Ruleset をデプロイします。マネージドルールセットを実行するルールを作成します。
-
Get a zone entry point ruleset オペレーションを呼び出し、
http_request_firewall_managedフェーズのエントリポイントルールセットの定義を取得します。この作業には ゾーン ID が必要です。Get a zone entry point rulesetbash curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{ "result": { "description": "Zone-level phase entry point", "id": "<RULESET_ID>", "kind": "zone", "last_updated": "2024-03-16T15:40:08.202335Z", "name": "zone", "phase": "http_request_firewall_managed", "rules": [ // ... ], "source": "firewall_managed", "version": "10" }, "success": true, "errors": [], "messages": [] } -
エントリポイントルールセットがすでに存在する場合(つまり、
200 OKステータスコードとルールセット定義を受け取った場合)は、レスポンス内のルールセット ID を控えます。次に、ゾーンルールセットのルールを作成する 操作を呼び出して、既存のルールセットに Cloudflare Managed Ruleset(ID はefb7b8c949ac4650a09736fc376e9aee) をデプロイするexecuteルールを追加します。デフォルトでは、ルールはルールセット内の既存ルール一覧の末尾に追加されます。Create a zone ruleset rulebash curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/$RULESET_ID/rules" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "action": "execute", "action_parameters": { "id": "efb7b8c949ac4650a09736fc376e9aee" }, "expression": "true", "description": "Execute the Cloudflare Managed Ruleset" }'{ "result": { "id": "<RULESET_ID>", "name": "Zone-level phase entry point", "description": "", "kind": "zone", "version": "11", "rules": [ // ... any existing rules { "id": "<RULE_ID>", "version": "1", "action": "execute", "action_parameters": { "id": "efb7b8c949ac4650a09736fc376e9aee", "version": "latest" }, "expression": "true", "description": "Execute the Cloudflare Managed Ruleset", "last_updated": "2024-03-18T18:08:14.003361Z", "ref": "<RULE_REF>", "enabled": true } ], "last_updated": "2024-03-18T18:08:14.003361Z", "phase": "http_request_firewall_managed" }, "success": true, "errors": [], "messages": [] } -
エントリポイントルールセットが存在しない場合(ステップ 1 で
404 Not Foundステータスコードを受け取った場合)、ゾーンルールセットを作成する 操作で作成します。rules配列に、Cloudflare Managed Ruleset(ID はefb7b8c949ac4650a09736fc376e9aee) を ゾーン内のすべての受信リクエスト 向けに実行するルールを 1 件含めます。Create a zone rulesetbash curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "name": "My ruleset", "description": "Entry point ruleset for WAF managed rulesets", "kind": "zone", "phase": "http_request_firewall_managed", "rules": [ { "action": "execute", "action_parameters": { "id": "efb7b8c949ac4650a09736fc376e9aee" }, "expression": "true", "description": "Execute the Cloudflare Managed Ruleset" } ] }'
この例では、マネージドルールセットは Cloudflare が設定した動作を実行します。マネージドルールセットの動作をカスタマイズするには マネージドルールセットを上書きする を参照してください。
次の手順で、アカウントレベルのフェーズにマネージドルールセットをデプロイします。
- アカウント ID を取得します。
- List account rulesets 操作を呼び出して、利用可能なマネージドルールセットを取得します。デプロイしたいマネージドルールセットのルールセット ID を探します。
- マネージドルールセットをデプロイする フェーズ を特定します。マネージドルールセットが、デプロイ先と同じフェーズに属することを確認します。
- マネージドルールセットを実行するルールを、アカウントレベルのフェーズ エントリポイントルールセット に追加します。ルール式のカスタム条件は括弧で囲み、Enterprise プランのゾーンにだけ適用するよう、式の末尾を
and cf.zone.plan eq "ENT"にしてください。この手順の詳細は、次の例を参照してください。
次の例では、指定したアカウント($ACCOUNT_ID)の http_request_firewall_managed フェーズに Cloudflare Managed Ruleset をデプロイします。マネージドルールセットを実行するルールを作成します。マネージドルールセット内のルールは、ゾーン名が example.com または anotherexample.com に一致するときに実行されます。
-
アカウントのエントリポイントルールセットを取得する 操作を呼び出し、
http_request_firewall_managedフェーズのエントリポイントルールセットの定義を取得します。この作業には アカウント ID が必要です。
At least one of the following token permissions is required:Required API token permissions
Account WAF WriteAccount WAF ReadAccount Rulesets ReadAccount Rulesets Write
Get an account entry point rulesetbash curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \ --request GET \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN"{ "result": { "description": "Account-level phase entry point", "id": "<RULESET_ID>", "kind": "root", "last_updated": "2024-03-16T15:40:08.202335Z", "name": "root", "phase": "http_request_firewall_managed", "rules": [ // ... ], "source": "firewall_managed", "version": "10" }, "success": true, "errors": [], "messages": [] } -
エントリポイントルールセットがすでに存在する場合(つまり、
200 OKステータスコードとルールセット定義を受け取った場合)は、レスポンス内のルールセット ID を控えます。次に、アカウントルールセットのルールを作成する 操作を呼び出して、既存のルールセットに Cloudflare Managed Ruleset(ID はefb7b8c949ac4650a09736fc376e9aee) をデプロイするexecuteルールを追加します。デフォルトでは、ルールはルールセット内の既存ルール一覧の末尾に追加されます。
At least one of the following token permissions is required:Required API token permissions
Account WAF WriteAccount Rulesets Write
Create an account ruleset rulebash curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/$RULESET_ID/rules" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "action": "execute", "action_parameters": { "id": "efb7b8c949ac4650a09736fc376e9aee" }, "expression": "(cf.zone.name in {\"example.com\" \"anotherexample.com\"}) and cf.zone.plan eq \"ENT\"", "description": "Execute the Cloudflare Managed Ruleset" }'{ "result": { "id": "<RULESET_ID>", "name": "Account-level phase entry point", "description": "", "kind": "root", "version": "11", "rules": [ // ... any existing rules { "id": "<RULE_ID>", "version": "1", "action": "execute", "action_parameters": { "id": "efb7b8c949ac4650a09736fc376e9aee", "version": "latest" }, "expression": "(cf.zone.name in {\"example.com\" \"anotherexample.com\"}) and cf.zone.plan eq \"ENT\"", "description": "Execute the Cloudflare Managed Ruleset", "last_updated": "2024-03-18T18:30:08.122758Z", "ref": "<RULE_REF>", "enabled": true } ], "last_updated": "2024-03-18T18:30:08.122758Z", "phase": "http_request_firewall_managed" }, "success": true, "errors": [], "messages": [] } -
エントリポイントルールセットが存在しない場合(ステップ 1 で
404 Not Foundステータスコードを受け取った場合)、アカウントルールセットを作成する 操作で作成します。rules配列に、Cloudflare Managed Ruleset(ID はefb7b8c949ac4650a09736fc376e9aee) を ゾーン名がexample.comまたはanotherexample.comに一致するすべての受信リクエスト 向けに実行するルールを 1 件含めます。
At least one of the following token permissions is required:Required API token permissions
Account WAF WriteAccount Rulesets Write
Create an account rulesetbash curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets" \ --request POST \ --header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \ --json '{ "name": "My ruleset", "description": "Entry point ruleset for WAF managed rulesets", "kind": "root", "phase": "http_request_firewall_managed", "rules": [ { "action": "execute", "action_parameters": { "id": "efb7b8c949ac4650a09736fc376e9aee" }, "expression": "(cf.zone.name in {\"example.com\" \"anotherexample.com\"}) and cf.zone.plan eq \"ENT\"", "description": "Execute the Cloudflare Managed Ruleset" } ] }'
この例では、マネージドルールセットは Cloudflare が設定した動作を実行します。マネージドルールセットの動作をカスタマイズする方法は マネージドルールセットを上書きする を参照してください。