Skip to content

非公式本サイトは非公式の日本語ドキュメントであり、Cloudflare 公式サイトではありません。最新情報はdevelopers.cloudflare.comをご確認ください。

マネージドルールセットをデプロイする

最終更新 Markdown で表示Agent セットアップ

マネージドルールセットは、ゾーンレベルまたはアカウントレベルでデプロイできます。フェーズにマネージドルールセットをデプロイするには、Rulesets API を使います。

Terraform を使う場合は、詳細を Terraform による WAF Managed Rules の設定 で参照してください。

Cloudflare ダッシュボードを使う場合は、次のページを参照してください。

ゾーンレベルでフェーズにマネージドルールセットをデプロイする

次の手順で、ゾーンレベルのフェーズにマネージドルールセットをデプロイします。

  1. ゾーン ID を取得します。
  2. List account rulesets 操作を呼び出して、利用可能なマネージドルールセットを取得します。マネージドルールセットはアカウントレベルにありますが、ゾーンにデプロイできます。デプロイしたいマネージドルールセットのルールセット ID を探します。
  3. マネージドルールセットをデプロイする フェーズ を特定します。マネージドルールセットが、デプロイ先と同じフェーズに属することを確認します。
  4. マネージドルールセットを実行するルールを、ゾーンレベルのフェーズ エントリポイントルールセット に追加します。この手順の詳細は、次の例を参照してください。

次の例では、指定したゾーン($ZONE_ID)の http_request_firewall_managed フェーズに Cloudflare Managed Ruleset をデプロイします。マネージドルールセットを実行するルールを作成します。

  1. 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": []
    }
  2. エントリポイントルールセットがすでに存在する場合(つまり、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": []
    }
  3. エントリポイントルールセットが存在しない場合(ステップ 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 が設定した動作を実行します。マネージドルールセットの動作をカスタマイズするには マネージドルールセットを上書きする を参照してください。

アカウントレベルでフェーズにマネージドルールセットをデプロイする

次の手順で、アカウントレベルのフェーズにマネージドルールセットをデプロイします。

  1. アカウント ID を取得します。
  2. List account rulesets 操作を呼び出して、利用可能なマネージドルールセットを取得します。デプロイしたいマネージドルールセットのルールセット ID を探します。
  3. マネージドルールセットをデプロイする フェーズ を特定します。マネージドルールセットが、デプロイ先と同じフェーズに属することを確認します。
  4. マネージドルールセットを実行するルールを、アカウントレベルのフェーズ エントリポイントルールセット に追加します。ルール式のカスタム条件は括弧で囲み、Enterprise プランのゾーンにだけ適用するよう、式の末尾を and cf.zone.plan eq "ENT" にしてください。この手順の詳細は、次の例を参照してください。

次の例では、指定したアカウント($ACCOUNT_ID)の http_request_firewall_managed フェーズに Cloudflare Managed Ruleset をデプロイします。マネージドルールセットを実行するルールを作成します。マネージドルールセット内のルールは、ゾーン名が example.com または anotherexample.com に一致するときに実行されます。

  1. アカウントのエントリポイントルールセットを取得する 操作を呼び出し、http_request_firewall_managed フェーズのエントリポイントルールセットの定義を取得します。この作業には アカウント ID が必要です。

    Required API token permissions

    At least one of the following token permissions is required:
    • Account WAF Write
    • Account WAF Read
    • Account Rulesets Read
    • Account 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": []
    }
  2. エントリポイントルールセットがすでに存在する場合(つまり、200 OK ステータスコードとルールセット定義を受け取った場合)は、レスポンス内のルールセット ID を控えます。次に、アカウントルールセットのルールを作成する 操作を呼び出して、既存のルールセットに Cloudflare Managed Ruleset(ID は efb7b8c949ac4650a09736fc376e9aee) をデプロイする execute ルールを追加します。デフォルトでは、ルールはルールセット内の既存ルール一覧の末尾に追加されます。

    Required API token permissions

    At least one of the following token permissions is required:
    • Account WAF Write
    • Account 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": []
    }
  3. エントリポイントルールセットが存在しない場合(ステップ 1 で 404 Not Found ステータスコードを受け取った場合)、アカウントルールセットを作成する 操作で作成します。rules 配列に、Cloudflare Managed Ruleset(ID は efb7b8c949ac4650a09736fc376e9aee) を ゾーン名が example.com または anotherexample.com に一致するすべての受信リクエスト 向けに実行するルールを 1 件含めます。

    Required API token permissions

    At least one of the following token permissions is required:
    • Account WAF Write
    • Account 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 が設定した動作を実行します。マネージドルールセットの動作をカスタマイズする方法は マネージドルールセットを上書きする を参照してください。

役に立ちましたか?