eCDN カスタムルール
カスタムルールを使用すると、さまざまなリクエストパラメーターに基づいてファイアウォールポリシーを設定して受信トラフィックを管理できます。これらの API エンドポイントは、ファイアウォールのルールの既存機能を拡張します。カスタムルールを使用すると、ルール式を完全に管理できます。また、許可されるリクエストフィールドタイプとルールのアクションのリストも拡張されました。これにより柔軟性が向上し、特定のトラフィックのニーズに一致する式を作成できるようになりました。
2024 年 2 月 6 日をもって、ファイアウォールルールは廃止されました。既存のファイアウォールルールは eCDN カスタムルールに移行され、カスタムルールエンドポイントからアクセスできます。カスタムルールエンドポイントを使用してファイアウォールルールを管理する方法の詳細については、次の ファイアウォールルールからカスタムルールへの移行 セクションを参照してください。
ルール式でサポートされるフィールドと演算子は、レート制限ルールで提供されるものと一致するようになりました。詳細については、eCDN レート制限ルールガイドのルール式を参照してください。
カスタムルール式の長さは最大 4096 文字です。
次のルールのアクションがアクション配列でサポートされています。
-
block
- リクエストされたサイトへのアクセスを拒否します。 -
js_challenge
- リクエストを行ったクライアントは、続行する前に JavaScript チャレンジに合格する必要があります。 -
legacy_captcha
- リクエストを行ったクライアントは、インタラクティブなチャレンジに合格する必要があります。レガシー captcha は API を通じて引き続き存在します。ただし、ユーザーエクスペリエンスを向上させるために、管理されたチャレンジレスポンスを選択することをお勧めします。
-
managed_challenge
- リクエストの特徴に応じ、適切なタイプのチャレンジがクライアントに提示されます。 -
log
- 一致するリクエストをログに記録します。
次のスキップアクションもアクション配列でサポートされています。
skip_custom_rules
- 残りのカスタムルールをすべてスキップします (つまり、優先度の低いカスタムルールは評価されません)。skip_waf
- WAFv1 管理ルールをスキップします。skip_security_level
- セキュリティレベルをスキップします。skip_rate_limiting_rules
- レート制限ルールをスキップします。関連ドキュメントについては、eCDN レート制限ルールを参照してください。skip_wafv2
- WAFv2 管理ルールをスキップします。詳細については、eCDN WAFv2 を参照してください。
スキップアクションを使用する場合、ユーザーは配列内で複数のスキップアクションを指定できます。そうしない場合、配列にはルールアクションが 1 つだけ含まれます。以下の使用例を参照してください。
カスタムルールは、レスポンスボディにリストされている順序で評価されます。カスタムルールの式が一致すると、アクションが実行されます。
managed_challenge
、js_challenge
、legacy_captcha
、block
、およびskip_custom_rules
のアクションは、それ以降のカスタムルールの評価を停止し、ルールセット内の他のルールは評価されません。skip_waf
、skip_security_level
およびlog
のアクションは、カスタムルールの評価を停止しません。
カスタムルールを作成または更新する場合、ユーザーはリクエストボディに position
属性を指定し、ルールセット内の特定の相対位置にルールを挿入できます。 ルールの作成時に位置が指定されていない場合、そのルールはデフォルトでルールセットの最後に追加されます。 以下の使用例を参照してください。
このエンドポイントは、指定されたゾーンにカスタムルールを作成します。
description
、expression
、およびactions
属性が必要です。enabled
およびposition
属性はオプションです。- 入力検証の詳細については、「検証概要」セクションを参照してください。
新しく作成されたルールはデフォルトで有効になり、特に指定のない限り、ルールセットの最後に追加されます。最大 50 個のカスタムルールが許可されています。
レスポンスボディには、作成されたカスタムルールが含まれます。
このエンドポイントは、指定されたゾーンのすべてのカスタムルールを返します。カスタムルールが存在しない場合は、404 (Not Found) レスポンスが返されます。
レスポンスボディには、指定されたゾーンの既存のカスタムルールがすべて含まれます。
このエンドポイントは、リクエストされたカスタムルールを返します。リクエストされたルールが存在しない場合は、404 (Not Found) レスポンスが返されます。
レスポンスボディには、リクエストされたカスタムルールが含まれます。
このエンドポイントは、リクエストされたカスタムルールを更新します。リクエストされたルールが存在しない場合は、404 (Not Found) レスポンスが返されます。
- ユーザーは、
description
、expression
、actions
、enabled
、またはposition
の属性のうちの少なくとも 1 つをリクエストボディに指定する必要があります。
レスポンスボディには、リクエストされたルールが含まれます。
このエンドポイントは、既存のすべてのカスタムルールの順序を更新します。ユーザーは、新規ルールの順序を表す ruleIds
の配列を提供します。配列には、既存カスタムルールのルール ID がすべて正確に含まれている必要があります。
レスポンスボディには、更新されたルールの順序で既存カスタムルールがすべて含まれます。
このエンドポイントは、リクエストされたカスタムルールを削除します。リクエストされたルールが存在しない場合は、404 (Not Found) レスポンスが返されます。
2024 年 2 月 6 日をもって、createFirewallRule エンドポイントと updateFirewallRuleエンドポイントは廃止され、使用できなくなりました。既存のファイアウォールルールはカスタムルール に移行され、カスタムルールとファイアウォールルールエンドポイントの 両方 を使用してアクセスできます。getFirewallRules、getFirewallRule、および deleteFirewallRule のエンドポイントは、カスタムルールへの移行を支援するために引き続き使用できますが、近い将来非推奨になります。
getCustomRulesエンドポイントを使用して、カスタムルールを表示します。既存のファイアウォールルールと作成したカスタムルールがレスポンスに含まれます。
既存の許可リストのファイアウォールルールがある場合、getCustomRules エンドポイントは追加のブロックルールを返します。「すべてブロック」ルールは、構成された許可リストルールの実行後に残りのすべてのトラフィックをブロックするために CDN-API によって作成されました。以前は、このルールはファイアウォールルール API レスポンスに表示されませんでした。トラフィックの柔軟性と制御性を高めるために、このルールがカスタムルール API レスポンスで公開されるようになりました。
次のレスポンスの例に示すように、getCustomRules エンドポイントを使用して、「すべてブロック」のルール情報を返します。複数の許可リストのファイアウォールルールを作成した場合、複数の許可リストのルールがレスポンスに含まれます。
- 最初のルールには、
expression
(国、IP、または ASN) を使用して指定された許可リストが含まれます (例:(ip.geoip.country in {\"US\"})
)。許可リストのルールではskip_custom_rules action
が使用されます。つまり、許可リストに一致するリクエストは、それ以降のカスタムルールでは評価されません。- このルールを更新して、アクセスコントロールのニーズに基づいて、他のスキップオプション (
skip_rate_limiting_rules
やskip_waf
など) を含めることができます。
- このルールを更新して、アクセスコントロールのニーズに基づいて、他のスキップオプション (
- 2 番目のルールは、「すべてブロック」のルール情報を提供します。これには、
expression
が(ip.src in {0.0.0.0/0})
として定義されたブロックアクションが含まれます。これにより、構成された許可リストルールに従って、残りのトラフィックがすべてブロックされます。- 「すべてブロック」ルールの管理は、管理者の責任です。このルールが不要な場合は削除できます。保持する場合、このルールは、ルールの順序の最後に配置する必要があることに注意してください。「すべてブロック」ルールの後にリストされているルールは実行されません。
ファイアウォールルール API とカスタムルール API では、RuleID
の値が異なる場合があります。カスタムルールエンドポイントを使用して、現在のルール ID を取得してください。
次のいずれかのオプションを使用できます。
- 許可リストルールを作成し、その後に「すべてブロック」ルールを作成します。このオプションでは、前の例で示したように、少なくとも 2 つの個別のルールを管理する必要があります。詳細については、前のセクションを参照してください。
- 「すべてブロック」ルールが存在する場合は、別のルールを作成する必要はありません。
- 「すべてブロック」ルールは、ルールの順序の最後に配置する必要があります。
- ブロックルールを作成し、ルール式で
not
演算子を使用します。以下に例を示します。- このルールは、
expression
で定義されている IP のリストに 含まれていない IP アドレスからのすべてのリクエストをブロックします。このルールは、式に IP が含まれていないリクエストを直ちにブロックします。このため、複数のルールで許可リストを定義する場合は、この方法は機能しません。この場合、前のオプションを使用する必要があります。
- このルールは、
IP アクセスコントロールを参照してください。
-
カスタムルールはファイアウォールのルールとどう違うのですか?
- カスタムルールを使用すると、ルール式を作成する際の柔軟性が高まります。カスタムルールとファイアウォールのルールは、どちらもストアフロントのファイアウォールポリシーを設定する機能を提供します。一方、カスタムルールはサポートされるアクションと式のフィールドの拡張セットを提供します。特にカスタムルール式では、URI パス (
http.request.uri.path
) やユーザーエージェント (http.user_agent
) などのフィールドが許可されます。
- カスタムルールを使用すると、ルール式を作成する際の柔軟性が高まります。カスタムルールとファイアウォールのルールは、どちらもストアフロントのファイアウォールポリシーを設定する機能を提供します。一方、カスタムルールはサポートされるアクションと式のフィールドの拡張セットを提供します。特にカスタムルール式では、URI パス (
-
ファイアウォールのルールを引き続き作成して使用できますか?
- はい。ファイアウォールのルールのエンドポイントは、2024 年 2 月 1 日に廃止されるまで引き続き機能します。ファイアウォールのルールのエンドポイントが廃止されると、既存のすべてのファイアウォールのルールはカスタムルールに変換されます。廃止日以降、顧客が使用できるのはカスタムルールのエンドポイントのみとなります。廃止計画に関するさらなる情報のお知らせまでお待ちください。
-
ファイアウォールのルールとカスタムルールはどのような順序で評価されますか?
- ファイアウォールのルールは、カスタムルールの前に評価されます。
-
ルール式を構築するにはどうすればいいですか?
- ルール式の構築に関する詳細については、Cloudflare ドキュメント を参照してください。