APIを介して例外を追加する
APIを使用して管理されたルールの例外を追加するには、http_request_firewall_managedフェーズのエントリポイントルールセットにskipアクションのルールを作成します。例外はアカウントレベルとゾーンレベルで定義できます。例外はスキップルールとも呼ばれます。
例外を構成するには、例外の種類に応じてaction_parametersオブジェクトを定義します。以下の例を参照してください:
APIを使用して例外を作成する方法の詳細については、Ruleset Engineのドキュメントの例外を作成するを参照してください。
以下の例では、dev.example.comホスト名に一致するリクエストのエントリポイントルールセットで残りのすべてのルールをスキップするルールを追加します。
-
ゾーンエントリポイントルールセットを取得する操作を呼び出して、
http_request_firewall_managedフェーズのエントリポイントルールセットの現在の構成を取得します。リクエスト curl https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/phases/http_request_firewall_managed/entrypoint \--header "Authorization: Bearer <API_TOKEN>"例の応答 {"result": {"id": "060013b1eeb14c93b0dcd896537e0d2c", // エントリポイントルールセットID"name": "default","description": "","source": "firewall_managed","kind": "zone","version": "3","rules": [// (...)],"last_updated": "2024-01-20T14:29:00.190643Z","phase": "http_request_firewall_managed"},"success": true,"errors": [],"messages": []}次のステップのためにエントリポイントルールセットID(
060013b1eeb14c93b0dcd896537e0d2c)を保存します。 -
ゾーンルールセットルールを作成する操作(
POSTリクエスト)を呼び出して、ルールリストの先頭に例外(またはスキップルール)を追加します。スキップルールは、後にリストされたルールにのみ適用されるためです。正確なルールの位置はpositionオブジェクトで定義されます。リクエスト curl "https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{entry_point_ruleset_id}/rules" \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{"expression": "(http.host eq \"dev.example.com\")","description": "dev.example.comの管理ルールをスキップ","action": "skip","action_parameters": {"ruleset": "current"},"position": {"before": ""}}'
APIを介して残りのすべてのルールをスキップする方法の詳細については、Ruleset Engineのドキュメントの例外を作成するを参照してください。
以下の例では、dev.example.comホスト名に一致するリクエストのためにCloudflare管理ルールセットをスキップするルールを追加します。
-
ゾーンエントリポイントルールセットを取得する操作を呼び出して、
http_request_firewall_managedフェーズのエントリポイントルールセットの現在の構成を取得します。リクエスト curl https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/phases/http_request_firewall_managed/entrypoint \--header "Authorization: Bearer <API_TOKEN>"例の応答 {"result": {"id": "060013b1eeb14c93b0dcd896537e0d2c", // エントリポイントルールセットID"name": "default","description": "","source": "firewall_managed","kind": "zone","version": "3","rules": [// (...){"id": "1bdb49371c1f46958fc8b985efcb79e7", // `execute`ルールID"version": "1","action": "execute","expression": "true","last_updated": "2024-01-20T14:21:28.643979Z","ref": "1bdb49371c1f46958fc8b985efcb79e7","enabled": true,"action_parameters": {"id": "efb7b8c949ac4650a09736fc376e9aee", // "Cloudflare管理ルールセット" ID"version": "latest"}}// (...)],"last_updated": "2024-01-20T14:29:00.190643Z","phase": "http_request_firewall_managed"},"success": true,"errors": [],"messages": []}Cloudflare管理ルールセットを展開しているルールを特定するには、
action_parameters>idが...376e9aee(管理ルールセットID)に等しいexecuteルールを検索します。次のステップのために以下のIDを保存します:
- エントリポイントルールセットのID(この例では
060013b1eeb14c93b0dcd896537e0d2c) - 管理ルールセットを展開している
executeルールのID(この例では1bdb49371c1f46958fc8b985efcb79e7)
- エントリポイントルールセットのID(この例では
-
ゾーンルールセットルールを作成する操作(
POSTリクエスト)を呼び出して、Cloudflare管理ルールセットを展開しているexecuteルールの直前に例外(またはスキップルール)を追加します。スキップルールは、後にリストされたルールにのみ適用されるためです。正確なルールの位置はpositionオブジェクトで定義されます。リクエスト curl "https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{entry_point_ruleset_id}/rules" \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{"expression": "(http.host eq \"dev.example.com\")","description": "dev.example.comのためにCloudflare管理ルールセットをスキップ","action": "skip","action_parameters": {"rulesets": ["efb7b8c949ac4650a09736fc376e9aee"]},"position": {"before": "1bdb49371c1f46958fc8b985efcb79e7"}}'
APIを介して1つ以上の管理ルールセットをスキップする方法の詳細については、Ruleset Engineのドキュメントの例外を作成するを参照してください。
以下の例では、dev.example.comホスト名に一致するリクエストのためにCloudflare管理ルールセットの特定のルールをスキップするルールを追加します。
-
ゾーンルールセットを取得する操作を呼び出して、Cloudflare管理ルールセット(ルールセットID
...376e9aee)のルールのリストを取得します。
アカウントレベルのエンドポイント(アカウントルールセットを取得する)またはゾーンレベルのエンドポイント(ゾーンルールセットを取得する)を使用して、管理ルールセットの詳細を取得できます。リクエスト curl https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/efb7b8c949ac4650a09736fc376e9aee \--header "Authorization: Bearer <API_TOKEN>"例の応答 {"result": {"id": "efb7b8c949ac4650a09736fc376e9aee","name": "Cloudflare管理ルールセット","description": "Cloudflareセキュリティチームによって作成され、このルールセットはすべてのアプリケーションに対して迅速かつ効果的な保護を提供するように設計されています。新しい脆弱性をカバーし、誤検知を減らすために頻繁に更新されます。","source": "firewall_managed","kind": "managed","version": "180","rules": [// (...){"id": "d9e350f1b72d4730899c8a420e48a85d", // スキップするルールのID"version": "180","action": "block","categories": ["file-inclusion", "october-cms"],"description": "October CMS - ファイルインクルージョン","last_updated": "2024-02-05T07:12:54.565276Z","ref": "adb550873eb92d32372ed08514d33241","enabled": true}// (...)],"last_updated": "2024-02-05T07:12:54.565276Z","phase": "http_request_firewall_managed"},"success": true,"errors": [],"messages": []}スキップしたいルールのID(この例では
...0e48a85d)をメモします。 -
ゾーンエントリポイントルールセットを取得する操作を呼び出して、
http_request_firewall_managedフェーズのエントリポイントルールセットの現在の構成を取得します。リクエスト curl https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/phases/http_request_firewall_managed/entrypoint \--header "Authorization: Bearer <API_TOKEN>"例の応答 {"result": {"id": "060013b1eeb14c93b0dcd896537e0d2c", // エントリポイントルールセットID"name": "default","description": "","source": "firewall_managed","kind": "zone","version": "3","rules": [// (...){"id": "1bdb49371c1f46958fc8b985efcb79e7", // `execute`ルールID"version": "1","action": "execute","expression": "true","last_updated": "2024-01-20T14:21:28.643979Z","ref": "1bdb49371c1f46958fc8b985efcb79e7","enabled": true,"action_parameters": {"id": "efb7b8c949ac4650a09736fc376e9aee", // "Cloudflare管理ルールセット" ID"version": "latest"}}// (...)],"last_updated": "2024-01-20T14:29:00.190643Z","phase": "http_request_firewall_managed"},"success": true,"errors": [],"messages": []}Cloudflare管理ルールセットを展開しているルールを特定するには、
action_parameters>idが...376e9aee(管理ルールセットID)に等しいexecuteルールを検索します。次のステップのために以下のIDを保存します:
- エントリポイントルールセットのID(この例では
060013b1eeb14c93b0dcd896537e0d2c) - Cloudflare管理ルールセットを展開している
executeルールのID(この例では1bdb49371c1f46958fc8b985efcb79e7)
次のIDも使用します:
- Cloudflare管理ルールセットのID(
...376e9aee) - スキップするルールのID(この例では
...0e48a85d)
- エントリポイントルールセットのID(この例では
-
ゾーンルールセットルールを作成する操作(
POSTリクエスト)を呼び出して、Cloudflare管理ルールセットを展開しているexecuteルールの直前に例外(またはスキップルール)を追加します。スキップルールは、後にリストされたルールにのみ適用されるためです。リクエスト curl "https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/{entry_point_ruleset_id}/rules" \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{"expression": "(http.host eq \"dev.example.com\")","description": "dev.example.comのために単一のルールをスキップ","action": "skip","action_parameters": {"rules": {"efb7b8c949ac4650a09736fc376e9aee": ["d9e350f1b72d4730899c8a420e48a85d"]}},"position": {"before": "1bdb49371c1f46958fc8b985efcb79e7"}}'
action_parameters > rulesオブジェクトには、スキップするルールIDのリストが関連付けられたCloudflare管理ルールセットのIDが含まれています(この場合、1つのルールのみ)。positionオブジェクトは、エントリポイントルールセット内の正確なルールの配置を定義します(ルール1bdb49371c1f46958fc8b985efcb79e7の前)。
APIを介して管理ルールセットの1つ以上のルールをスキップする方法の詳細については、Ruleset Engineのドキュメントの例外を作成するを参照してください。