シーケンスルール は Cookie を使い、ユーザーが行ったリクエストの順序とリクエスト間の時間を追跡し、Cloudflare Rules から利用できるようにします。これにより、有効または無効なシーケンスに一致するルールを書けます。シーケンスの検証に使う Cookie をシーケンス Cookie と呼びます。
- アカウントに Fraud Detection のサブスクリプションが必要です。
- 各ゾーンで、Endpoint Management により追跡するエンドポイントを設定する必要があります。
Cloudflare ダッシュボードでシーケンスのカスタムルールを作成する か、API で管理する ことができます。
これらのシーケンスフィールドは、次で利用できます。
- カスタムルール(
http_request_firewall_customフェーズ) - レート制限ルール(
http_request_ratelimit) - Bulk Redirects(
http_request_redirect) - Request Header Transform Rules(
http_request_late_transform)
| フィールド名 | 説明 | 値の例 |
|---|---|---|
| 現在のリクエストに一致するオペレーションの ID です。Endpoint Management で定義したどのオペレーションにも一致しない場合は、空文字列になります。 |
|
| シーケンス内の直前までのオペレーション ID の配列です。新しい順に並びます。現在のリクエストは含まれません。 |
|
| キーがオペレーション ID、値がそのオペレーションが直近で発生してからのミリ秒数であるマップです。 |
|
-
Cloudflare ダッシュボードで Security rules ページを開きます。
Security rules を開く ↗ -
空のルールを新規作成するには、Create rule > Custom rules を選びます。
-
Rule name に、ルールの内容が分かる名前を入力します。
-
When incoming requests match で、Field のドロップダウンから Sequences で絞り込み、次のいずれかを選びます。
- Current Operation
- Previous Operations
- Elapsed time
-
Value で編集アイコンを選び、Builder を使ってサイドパネルでシーケンスを組み立てます。
-
Select a hostname for this sequence で、ドロップダウンからすべて、または特定のホスト名を選びます。任意で、検索バーから特定のホスト名を検索できます。
-
Methods のドロップダウンから、すべてのメソッド、または特定のリクエストメソッドを選びます。
-
シーケンスに含めたい順に、各エンドポイントのチェックボックスを選びます。
-
完了までの時間を設定します。
-
Save を選びます。
-
Then take action で、Choose action のドロップダウンからルールのアクションを選びます。たとえば Block を選ぶと、指定した条件に一致するリクエストを Cloudflare が拒否します。
-
(任意)Block アクションを選んだ場合は、カスタムレスポンスを設定できます。
-
Place at で、ルールを実行する順序を選びます。
-
ルールを保存してデプロイするには、Deploy を選びます。まだデプロイしない場合は、Save as Draft を選びます。
- まだ持っていない場合は、API トークンを作成 します。API トークンには Zone > Fraud Detection > Edit 権限が必要です。
- シーケンスルールを有効にするゾーンの ゾーン ID を取得 します。
- API Shield の Endpoint Management で、シーケンスルールで追跡する エンドポイントを追加 し、short ID を控えます。
- 次の API 呼び出しに API トークンとゾーン ID を指定し、シーケンス Cookie を有効にします。
curl --request PUT \
https://api.cloudflare.com/client/v4/zones/{zone_id}/fraud_detection/sequence_cookies \
--header "Authorization: Bearer <API_TOKEN>" \
--header "Content-Type: application/json" \
--data '{"enabled": true}'シーケンスルールを有効にすると、ルールフィールドが入力され、新しいフィールドをルールで使えます。
シーケンスルールを無効にすると、ルールフィールドへの入力が止まります。これらのフィールドに依存するルールがまだデプロイされていると、意図どおりに動作しないことがあります。シーケンスルールを無効にする前に、シーケンスフィールドに依存するルールを削除または無効にしてください。
シーケンスルールを無効にする手順は次のとおりです。
- まだ持っていない場合は、API トークンを作成 します。API トークンには Zone > Fraud Detection > Edit 権限が必要です。
- シーケンスルールを無効にするゾーンの ゾーン ID を取得 します。
- API Shield の Endpoint Management で、シーケンスルールで追跡する エンドポイントを追加 し、short ID を控えます。
- API トークンとゾーン ID を使い、次の API 呼び出しで
enabledをfalseにして、シーケンス Cookie を無効にします。
curl --request PUT https://api.cloudflare.com/client/v4/zones/{zone_id}/fraud_detection/sequence_cookies \
--header "Authorization: Bearer <API_TOKEN>" \
--data '{"enabled": false}'シーケンスルールは、Cloudflare Rules に 3 つの新しいフィールドを追加します。これらのフィールドはすべて、オペレーションを short ID で参照します。Fraud Detection のサブスクリプションがあるアカウントは、Cloudflare ダッシュボードの API Shield > Endpoint Management でエンドポイントの詳細を開き、short ID を確認できます。Fraud Detection がないアカウントは、このフィールドにアクセスできません。
Cloudflare は、シーケンス内の直近 10 件までのオペレーションを、最大 1 時間保存します。シーケンスに 10 件を超えるオペレーションがある場合、古いオペレーションは破棄され、次のフィールドには含まれません。同様に、1 時間以上前のオペレーションも、次のフィールドには含まれません。
お客様は、エンドポイント B の前にエンドポイント A をリクエストする必要があります。
cf.sequence.current_op eq "bbbbbbbb" and
any(cf.sequence.previous_ops[*] == "aaaaaaaa")cf.sequence.current_op eq "bbbbbbbb" and
not any(cf.sequence.previous_ops[*] == "aaaaaaaa")お客様は、エンドポイント B の少なくとも 1 秒前にエンドポイント A をリクエストする必要があります。
cf.sequence.current_op eq "bbbbbbbb" and
cf.sequence.msec_since_op["aaaaaaaa"] ge 1000cf.sequence.current_op eq "bbbbbbbb" and
not cf.sequence.msec_since_op["aaaaaaaa"] ge 1000Cookie に Secure 属性を設定するため、Cloudflare がサポートするのは HTTPS リクエストだけです。
シーケンスルールは現在、プライベートベータです。ベータに参加したい場合は、アカウントチームに連絡してください。