Rulesets API を使い、マネージドルールセットの実行を設定し、動作をオーバーライドします。デフォルトでは、有効なルールはマネージドルールセットの発行元が定義したアクションを実行します。この例では、特定のタグを持つルールだけが有効になるようにオーバーライドを使います。
joomla タグが付いたルールだけを有効にするため、マネージドルールセットの実行を 2 つのオーバーライドで設定する手順は次のとおりです。
- マネージドルールセットを実行するルールを、フェーズのエントリポイントルールセットに 追加 します。
- マネージドルールセット内のすべてのルールを無効にする ルールセットオーバーライドを設定 します。
- 指定したタグを持つルールだけを有効にするタグオーバーライドを設定します。
タグオーバーライドはルールセットオーバーライドより優先されます。指定したタグを持つルールだけが有効になり、それ以外のルールはすべて無効になります。
この例では、Joomla ルールだけを有効にした状態で、Cloudflare Managed Ruleset をフェーズにデプロイします。name、kind、phase フィールドは変更できないため、リクエストから省略しています。
例: ゾーンレベルでカテゴリーオーバーライドを使い、Joomla ルールだけを有効にする
Required API token permissions
At least one of the following token permissions is required:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"action": "execute",
"expression": "true",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>",
"overrides": {
"enabled": false,
"categories": [
{
"category": "joomla",
"action": "block",
"enabled": true
}
]
}
}
}
]
}'"id": "<MANAGED_RULESET_ID>"は、指定したゾーン($ZONE_ID)へのリクエストに Cloudflare Managed Ruleset を適用するルールを、フェーズのルールセットに追加します。"enabled": falseは、マネージドルールセット内のすべてのルールを無効にするルールセットレベルのオーバーライドを定義します。"categories": [{"category": "joomla", "action": "block", "enabled": true}]は、Joomla ルールを有効にし、アクションをblockに設定するタグレベルのオーバーライドを定義します。
例: アカウントレベルでカテゴリーオーバーライドを使い、Joomla ルールだけを有効にする
Required API token permissions
At least one of the following token permissions is required:Mass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteTransform Rules WriteSelect Configuration WriteAccount WAF WriteAccount Rulesets WriteLogs Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"action": "execute",
"expression": "cf.zone.name eq \"example.com\" and cf.zone.plan eq \"ENT\"",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>",
"overrides": {
"enabled": false,
"categories": [
{
"category": "joomla",
"action": "block",
"enabled": true
}
]
}
}
}
]
}'"id": "<MANAGED_RULESET_ID>"は、example.comへのリクエストに Cloudflare Managed Ruleset を適用するルールを、フェーズのルールセットに追加します。"enabled": falseは、マネージドルールセット内のすべてのルールを無効にするルールセットレベルのオーバーライドを定義します。"categories": [{"category": "joomla", "action": "block", "enabled": true}]は、Joomla ルールを有効にし、アクションをblockに設定するタグレベルのオーバーライドを定義します。
1 つのルールに、カテゴリーオーバーライドを複数追加できます。
この例では、http_request_firewall_managed フェーズでマネージドルールセット(<MANAGED_RULESET_ID>)を実行するルールに、オーバーライドを 2 つ追加します。name、kind、phase フィールドは変更できないため、リクエストから省略しています。
例: ゾーンレベルで複数のカテゴリーオーバーライドを追加する
Required API token permissions
At least one of the following token permissions is required:Response Compression WriteConfig Settings WriteDynamic URL Redirects WriteCache Settings WriteCustom Errors WriteOrigin WriteManaged headers WriteZone Transform Rules WriteMass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteHTTP DDoS Managed Ruleset WriteSanitize WriteTransform Rules WriteSelect Configuration WriteBot Management WriteZone WAF WriteAccount WAF WriteAccount Rulesets WriteLogs WriteLogs Write
curl "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"action": "execute",
"expression": "true",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>",
"overrides": {
"enabled": false,
"categories": [
{
"category": "joomla",
"action": "log",
"enabled": true
},
{
"category": "wordpress",
"enabled": false
}
]
}
}
}
]
}'例: アカウントレベルで複数のカテゴリーオーバーライドを追加する
Required API token permissions
At least one of the following token permissions is required:Mass URL Redirects WriteMagic Firewall WriteL4 DDoS Managed Ruleset WriteTransform Rules WriteSelect Configuration WriteAccount WAF WriteAccount Rulesets WriteLogs Write
curl "https://api.cloudflare.com/client/v4/accounts/$ACCOUNT_ID/rulesets/phases/http_request_firewall_managed/entrypoint" \
--request PUT \
--header "Authorization: Bearer $CLOUDFLARE_API_TOKEN" \
--json '{
"rules": [
{
"action": "execute",
"expression": "cf.zone.name eq \"example.com\" and cf.zone.plan eq \"ENT\"",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>",
"overrides": {
"enabled": false,
"categories": [
{
"category": "joomla",
"action": "log",
"enabled": true
},
{
"category": "wordpress",
"enabled": false
}
]
}
}
}
]
}'ルールセット内のオーバーライドの順序によって、デプロイしたマネージドルールセットのルールが有効になるか無効になるかが決まります。リストの後ろにあるオーバーライドは、前のオーバーライドより優先されます。
上のコードにあるマネージドルールセットから、category タグの組み合わせが異なる 4 つのルールを考えます。次の表は、オーバーライド後のルールの状態です。
| マネージドルールセット内のルール | タグ | オーバーライド後のルール状態 |
|---|---|---|
| ManagedRule1 | drupal、dos |
無効 |
| ManagedRule2 | drupal、dos、joomla |
有効 |
| ManagedRule3 | dos、joomla、wordpress |
無効 |
| ManagedRule4 | drupal、wordpress |
無効 |
| ManagedRule5 | (タグなし) | 無効 |