管理されたルールセットのデプロイ
ゾーンレベルまたはアカウントレベルで管理されたルールセットをデプロイできます。
フェーズに管理されたルールセットをデプロイするには、Rulesets APIを使用します。
以下のワークフローを使用して、ゾーンレベルでフェーズに管理されたルールセットをデプロイします。
- ゾーンIDを取得します。
- アカウントルールセットの一覧操作を呼び出して、利用可能なルールセットを取得します。管理されたルールセットはアカウントレベルに存在しますが、ゾーンにデプロイできます。デプロイしたい管理されたルールセットのルールセットIDを見つけます。
- 管理されたルールセットをデプロイしたいフェーズを特定します。管理されたルールセットがデプロイしたいフェーズに属していることを確認します。各Cloudflare製品がサポートする利用可能なフェーズについて詳しくは、その製品の特定のドキュメントまたはフェーズリストを参照してください。
- 管理されたルールセットを実行するゾーンレベルのフェーズエントリポイントルールセットにルールを追加します。
以下の例では、指定されたゾーン({zone_id})のhttp_request_firewall_managedフェーズに管理されたルールセットをデプロイするために、管理されたルールセットを実行するルールを作成します。
curl --request PUT \https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/phases/http_request_firewall_managed/entrypoint \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "action": "execute", "action_parameters": { "id": "<CLOUDFLARE_MANAGED_RULESET_ID>" }, "expression": "true", "description": "私のゾーンレベルのフェーズエントリポイントでCloudflare管理ルールセットを実行" } ]}'{ "result": { "id": "<ZONE_PHASE_RULESET_ID>", "name": "ゾーンレベルのフェーズエントリポイント", "description": "", "kind": "zone", "version": "3", "rules": [ { "id": "<RULE_ID_1>", "version": "1", "action": "execute", "action_parameters": { "id": "<CLOUDFLARE_MANAGED_RULESET_ID>", "version": "latest" }, "expression": "true", "description": "私のゾーンレベルのフェーズエントリポイントでCloudflare管理ルールセットを実行", "last_updated": "2021-03-18T18:08:14.003361Z", "ref": "<RULE_REF_1>", "enabled": true } ], "last_updated": "2021-03-18T18:08:14.003361Z", "phase": "http_request_firewall_managed" }, "success": true, "errors": [], "messages": []}以下のワークフローを使用して、アカウントレベルでフェーズに管理されたルールセットをデプロイします。
- アカウントIDを取得します。
- アカウントルールセットの一覧操作を呼び出して、利用可能なルールセットを取得します。デプロイしたい管理されたルールセットのルールセットIDを見つけます。
- 管理されたルールセットをデプロイしたいフェーズを特定します。管理されたルールセットがデプロイしたいフェーズに属していることを確認します。各Cloudflare製品がサポートする利用可能なフェーズについて詳しくは、その製品の特定のドキュメントまたはフェーズリストを参照してください。
- 管理されたルールセットを実行するアカウントレベルのフェーズエントリポイントルールセットにルールを追加します。ルールの式内のカスタム条件を括弧で囲み、式を
and cf.zone.plan eq "ENT"で終わらせて、エンタープライズプランのゾーンにのみ適用されるようにします。
以下の例では、アカウント({account_id})のhttp_request_firewall_managedフェーズに管理されたルールセットをデプロイするために、管理されたルールセットを実行するルールを作成します。管理されたルールセット内のルールは、ゾーン名がexample.comまたはanotherexample.comのいずれかと一致する場合に実行されます。
curl --request PUT \https://api.cloudflare.com/client/v4/accounts/{account_id}/rulesets/phases/http_request_firewall_managed/entrypoint \--header "Authorization: Bearer <API_TOKEN>" \--header "Content-Type: application/json" \--data '{ "rules": [ { "action": "execute", "action_parameters": { "id": "<CLOUDFLARE_MANAGED_RULESET_ID>" }, "expression": "(cf.zone.name in {\"example.com\" \"anotherexample.com\"}) and cf.zone.plan eq \"ENT\"", "description": "私のアカウントレベルのフェーズエントリポイントでCloudflare管理ルールセットを実行" } ]}'{ "result": { "id": "<RULESET_ID>", "name": "アカウントレベルのフェーズエントリポイント", "description": "", "kind": "root", "version": "5", "rules": [ { "id": "<RULE_ID>", "version": "1", "action": "execute", "action_parameters": { "id": "<CLOUDFLARE_MANAGED_RULESET_ID>", "version": "latest" }, "expression": "(cf.zone.name in {\"example.com\" \"anotherexample.com\"}) and cf.zone.plan eq \"ENT\"", "description": "私のアカウントレベルのフェーズエントリポイントでCloudflare管理ルールセットを実行", "last_updated": "2021-03-18T18:30:08.122758Z", "ref": "<RULE_REF>", "enabled": true } ], "last_updated": "2021-03-18T18:30:08.122758Z", "phase": "http_request_firewall_managed" }, "success": true, "errors": [], "messages": []}これらの例では、管理されたルールセットはCloudflareによって構成された動作を実行します。管理されたルールセットの動作をカスタマイズするには、管理されたルールセットのオーバーライドを参照してください。