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_challengejs_challengelegacy_captchablock、および skip_custom_rules のアクションは、それ以降のカスタムルールの評価を停止し、ルールセット内の他のルールは評価されません。
  • skip_wafskip_security_level およびlog のアクションは、カスタムルールの評価を停止しません。

カスタムルールを作成または更新する場合、ユーザーはリクエストボディに position 属性を指定し、ルールセット内の特定の相対位置にルールを挿入できます。 ルールの作成時に位置が指定されていない場合、そのルールはデフォルトでルールセットの最後に追加されます。 以下の使用例を参照してください。

このエンドポイントは、指定されたゾーンにカスタムルールを作成します。

  • descriptionexpression、および actions 属性が必要です。
  • enabled および position 属性はオプションです。
  • 入力検証の詳細については、「検証概要」セクションを参照してください。

新しく作成されたルールはデフォルトで有効になり、特に指定のない限り、ルールセットの最後に追加されます。最大 50 個のカスタムルールが許可されています。

レスポンスボディには、作成されたカスタムルールが含まれます。

このエンドポイントは、指定されたゾーンのすべてのカスタムルールを返します。カスタムルールが存在しない場合は、404 (Not Found) レスポンスが返されます。

レスポンスボディには、指定されたゾーンの既存のカスタムルールがすべて含まれます。

このエンドポイントは、リクエストされたカスタムルールを返します。リクエストされたルールが存在しない場合は、404 (Not Found) レスポンスが返されます。

レスポンスボディには、リクエストされたカスタムルールが含まれます。

このエンドポイントは、リクエストされたカスタムルールを更新します。リクエストされたルールが存在しない場合は、404 (Not Found) レスポンスが返されます。

  • ユーザーは、descriptionexpressionactionsenabled、または position の属性のうちの少なくとも 1 つをリクエストボディに指定する必要があります。

レスポンスボディには、リクエストされたルールが含まれます。

このエンドポイントは、既存のすべてのカスタムルールの順序を更新します。ユーザーは、新規ルールの順序を表す ruleIds の配列を提供します。配列には、既存カスタムルールのルール ID がすべて正確に含まれている必要があります。

レスポンスボディには、更新されたルールの順序で既存カスタムルールがすべて含まれます。

このエンドポイントは、リクエストされたカスタムルールを削除します。リクエストされたルールが存在しない場合は、404 (Not Found) レスポンスが返されます。

2024 年 2 月 6 日をもって、createFirewallRule エンドポイントと updateFirewallRuleエンドポイントは廃止され、使用できなくなりました。既存のファイアウォールルールはカスタムルール に移行され、カスタムルールとファイアウォールルールエンドポイントの 両方 を使用してアクセスできます。getFirewallRulesgetFirewallRule、および deleteFirewallRule のエンドポイントは、カスタムルールへの移行を支援するために引き続き使用できますが、近い将来非推奨になります。

getCustomRulesエンドポイントを使用して、カスタムルールを表示します。既存のファイアウォールルールと作成したカスタムルールがレスポンスに含まれます。

既存の許可リストのファイアウォールルールがある場合、getCustomRules エンドポイントは追加のブロックルールを返します。「すべてブロック」ルールは、構成された許可リストルールの実行後に残りのすべてのトラフィックをブロックするために CDN-API によって作成されました。以前は、このルールはファイアウォールルール API レスポンスに表示されませんでした。トラフィックの柔軟性と制御性を高めるために、このルールがカスタムルール API レスポンスで公開されるようになりました。

次のレスポンスの例に示すように、getCustomRules エンドポイントを使用して、「すべてブロック」のルール情報を返します。複数の許可リストのファイアウォールルールを作成した場合、複数の許可リストのルールがレスポンスに含まれます。

  • 最初のルールには、expression (国、IP、または ASN) を使用して指定された許可リストが含まれます (例: (ip.geoip.country in {\"US\"}))。許可リストのルールでは skip_custom_rules action が使用されます。つまり、許可リストに一致するリクエストは、それ以降のカスタムルールでは評価されません。
    • このルールを更新して、アクセスコントロールのニーズに基づいて、他のスキップオプション (skip_rate_limiting_rulesskip_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) などのフィールドが許可されます。
  • ファイアウォールのルールを引き続き作成して使用できますか?

    • はい。ファイアウォールのルールのエンドポイントは、2024 年 2 月 1 日に廃止されるまで引き続き機能します。ファイアウォールのルールのエンドポイントが廃止されると、既存のすべてのファイアウォールのルールはカスタムルールに変換されます。廃止日以降、顧客が使用できるのはカスタムルールのエンドポイントのみとなります。廃止計画に関するさらなる情報のお知らせまでお待ちください。
  • ファイアウォールのルールとカスタムルールはどのような順序で評価されますか?

    • ファイアウォールのルールは、カスタムルールの前に評価されます。
  • ルール式を構築するにはどうすればいいですか?