Skip to content

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

API で WAF マネージドルールセットをデプロイする(アカウント)

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

Rulesets API を使い、アカウント単位で http_request_firewall_managed フェーズに WAF マネージドルールセットをデプロイします。

WAF Managed Rules のページに、各 WAF マネージドルールセットの ID があります。API でルールセットをデプロイするときに、この情報が必要です。

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

次の例では、指定したアカウント($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"
    				}
    		]
    	}'

次のステップ

マネージドルールセットに含まれるルールの動作をカスタマイズするには、オーバーライドを作成 します。

WAF マネージドルールセット全体、または一部のルールの実行をスキップするには、例外を作成 します(スキップルールとも呼びます)。

例外はオーバーライドより優先されます。

関連リソース

ゾーン単位で API からマネージドルールセットをデプロイする手順は、API で WAF マネージドルールセットをデプロイする(ゾーン) を参照してください。

API でマネージドルールセットを扱う詳細は、Ruleset Engine ドキュメントの マネージドルールセットを扱う を参照してください。

役に立ちましたか?