Rulesets API でオーバーライドを定義し、HTTP DDoS Attack Protection マネージドルールセットを設定します。
各ゾーンでは、HTTP DDoS Attack Protection マネージドルールセットがデフォルトで有効です。そのため、マネージドルールセットを ddos_l7 フェーズのルールセットに明示的にデプロイする必要はありません。オーバーライドを設定する場合に限り、フェーズのルールセットにルールを作成してマネージドルールセットをデプロイします。
Terraform を使う場合は、Terraform での DDoS マネージドルールセットの設定 を参照してください。
オーバーライドを使って、HTTP DDoS Attack Protection マネージドルールセットを設定します。オーバーライドでは、デフォルトとは異なるアクションや感度レベルを定義できます。利用できるアクションと感度レベルの値は、ルールセットパラメーター を参照してください。
オーバーライドのスコープは、ルールセット、タグ、またはルールです。タグとルールの設定は、ルールセットの設定より優先されます。
オーバーライドはゾーンレベルとアカウントレベルで作成できます。アカウントレベルのオーバーライドでは、1 つのルールでアカウント内の複数ゾーンに同じオーバーライドを適用できます。たとえば、特定のマネージドルールセットのルールの感度を下げたり、複数ゾーンで IP リスト を除外したりできます。ただし、ゾーンに HTTP DDoS Attack Protection マネージドルールセットのオーバーライドがある場合、そのゾーンではアカウントレベルのオーバーライドは評価されません。
ddos_l7 フェーズのエントリポイントルールセットに複数のルールを作成し、受信リクエストの集合ごとに異なるオーバーライドを定義します。各ルールの式は、HTTP DDoS 対策をカスタマイズしたいトラフィックに合わせて設定します。
オーバーライドを作成するフェーズエントリポイントルールセットのルールは、ルール式と感度レベルに一致するまで順に評価されます。Cloudflare はリクエストに一致した最初のルールを適用します。そのため、エントリポイントルールセット内のルールの順序は非常に重要です。
次の PUT の例は、ゾーンレベルで ddos_l7 フェーズのフェーズルールセットを新規作成(または既存のものを更新)します。リクエストには、HTTP DDoS Attack Protection マネージドルールセットのデフォルト動作を調整するオーバーライドがいくつか含まれます。オーバーライドの内容は次のとおりです。
- マネージドルールセットのすべてのルールは、アクション
managed_challengeと感度レベルmediumを使います。 <TAG_NAME>のタグが付いたすべてのルールは、感度レベルlowになります。- ID が
<MANAGED_RULESET_RULE_ID>のルールは、アクションblockを使います。
curl --request PUT \
https://api.cloudflare.com/client/v4/zones/{zone_id}/rulesets/phases/ddos_l7/entrypoint \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"description": "Execute HTTP DDoS Attack Protection managed ruleset in the zone-level phase entry point ruleset",
"rules": [
{
"action": "execute",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>",
"overrides": {
"sensitivity_level": "medium",
"action": "managed_challenge",
"categories": [
{
"category": "<TAG_NAME>",
"sensitivity_level": "low"
}
],
"rules": [
{
"id": "<MANAGED_RULESET_RULE_ID>",
"action": "block"
}
]
}
},
"expression": "true"
}
]
}'レスポンスは、作成(または更新)したフェーズのエントリポイントルールセットを返します。
レスポンス
{
"result": {
"id": "<PHASE_ENTRY_POINT_RULESET_ID>",
"name": "default",
"description": "Execute HTTP DDoS Attack Protection managed ruleset in the zone-level phase entry point ruleset",
"kind": "zone",
"version": "1",
"rules": [
{
"id": "<RULE_ID>",
"version": "1",
"action": "execute",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>",
"version": "latest",
"overrides": {
"action": "managed_challenge",
"categories": [
{
"category": "<TAG_NAME>",
"sensitivity_level": "low"
}
],
"rules": [
{
"id": "<MANAGED_RULESET_RULE_ID>",
"action": "block"
}
],
"sensitivity_level": "medium"
}
},
"expression": "true",
"last_updated": "2021-06-16T04:14:47.977741Z",
"ref": "<RULE_REF>",
"enabled": true
}
],
"last_updated": "2021-06-16T04:14:47.977741Z",
"phase": "ddos_l7"
}
}Rulesets API でマネージドルールセットのオーバーライドを定義する方法は、Ruleset Engine のドキュメントの マネージドルールセットをオーバーライドする を参照してください。
次の PUT の例は、アカウントレベルで ddos_l7 フェーズのフェーズルールセットを新規作成(または既存のものを更新)します。この例では、allowlisted_ips IP リスト に含まれる IP アドレスからのリクエストに対して、次の設定のルールオーバーライドを 1 件定義します。
- HTTP DDoS Attack Protection マネージドルールセット(ID は
<MANAGED_RULESET_ID>)に属する、ID<MANAGED_RULESET_RULE_ID>のルールは、感度レベルeoff(Essentially Off)になり、アクションlogを実行します。
curl --request PUT \
https://api.cloudflare.com/client/v4/accounts/{account_id}/rulesets/phases/ddos_l7/entrypoint \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"description": "Disable a managed ruleset rule for allowlisted IP addresses",
"rules": [
{
"expression": "ip.src in $allowlisted_ips",
"action": "execute",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>",
"overrides": {
"rules": [
{
"id": "<MANAGED_RULESET_RULE_ID>",
"action": "log",
"sensitivity_level": "eoff"
}
]
}
}
}
]
}'レスポンスは、作成(または更新)したフェーズのエントリポイントルールセットを返します。
レスポンス
{
"result": {
"id": "<PHASE_ENTRY_POINT_RULESET_ID>",
"name": "default",
"description": "Disable a managed ruleset rule for allowlisted IP addresses",
"kind": "root",
"version": "1",
"rules": [
{
"id": "<RULE_ID>",
"version": "1",
"action": "execute",
"action_parameters": {
"id": "<MANAGED_RULESET_ID>",
"version": "latest",
"overrides": {
"rules": [
{
"id": "<MANAGED_RULESET_RULE_ID>",
"action": "log",
"sensitivity_level": "eoff"
}
]
}
},
"expression": "ip.src in $allowlisted_ips",
"last_updated": "2022-10-16T04:14:47.977741Z",
"ref": "<RULE_REF>",
"enabled": true
}
],
"last_updated": "2022-10-16T04:14:47.977741Z",
"phase": "ddos_l7"
}
}Rulesets API でマネージドルールセットのオーバーライドを定義する方法は、Ruleset Engine のドキュメントの マネージドルールセットをオーバーライドする を参照してください。