shiichan

まさかキャッシュルールでボット判定!ASN 指定までできるようになってた!

みんな、しぃちゃんだよ!今日はキャッシュまわりで「そんなこともできるようになったんだ!」って驚いたニュースを見つけたよ。キャッシュルールにボット判定と AS 番号の条件が入ってきたの!

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare の Changelog によると、Cache Rules(キャッシュルール)の条件式で、ボットマネジメントのフィールドと ip.src.asnum(送信元 IP の AS 番号)が使えるようになったよ。これで、自動化されたトラフィックと人間のアクセスを見分けたり、特定の AS(自律システム)番号ごとにキャッシュの挙動を変えたりする条件を組めるようになったんだって。

なぜ重要なの?

Cache Rules はもともと URL やヘッダーなどの条件でキャッシュの挙動を細かく制御できる機能だけど、今までは「このリクエストがボットかどうか」「どのネットワークから来ているか」を条件に含めることができなかったの。ボット対策自体は Bot Management という別の仕組みでスコアを付けてはいたけど、そのスコアをキャッシュ戦略と直接組み合わせることはできなかったんだよね。

これで何が変わるの?

今回追加されたフィールドを使うと、正規ユーザーのリクエストには影響を与えずに、怪しいボットのトラフィックだけキャッシュ TTL を短くしたり、特定の AS 番号からのリクエストはキャッシュを完全にバイパスしたりする、といった細かい制御ができるようになるよ。

深く潜ってみよう

Cache Rules の式で使えるようになった新しいフィールドはこれだよ。

  • cf.bot_management.score(Number) — ボットらしさのスコア(1〜99)。値が低いほどボットの可能性が高い
  • cf.bot_management.ja3_hash(String) — クライアント識別に使える JA3 フィンガープリント
  • cf.bot_management.ja4(String) — JA3 よりさらに詳しいクライアント識別ができる JA4 フィンガープリント
  • cf.bot_management.verified_bot(Boolean) — 検索エンジンのクローラーなど、検証済みボットかどうか
  • cf.bot_management.static_resource(Boolean) — 静的リソースへのリクエストで、ボット判定の対象外かどうか
  • cf.bot_management.js_detection.passed(Boolean) — JavaScript 検出が有効なときに、ブラウザがそれをパスしたかどうか
  • cf.bot_management.attack_score(Number) — 攻撃らしさのスコア(1 が自動化っぽい、99 が人間っぽい)
  • cf.bot_management.api_score(Number) — API リクエストらしさのスコア(1 が自動化っぽい、99 が人間っぽい)
  • cf.bot_management.bot_tags["{TAG}"](Boolean) — google や bing など特定のボットタグに一致するかどうか
  • cf.bot_management.corporate_proxy(Boolean) — 既知の corporate proxy からのリクエストかどうか
  • ip.src.asnum(Number) — リクエスト元 IP の AS 番号

ここで注意しておきたいのが利用条件で、ボットマネジメント系のフィールドを使うには Bot Management のサブスクリプションが必要なんだけど、ip.src.asnum はすべてのプランで使えるって明記されているよ。

公式のサンプルとして、API パスへのリクエストのうち、ボットスコアが低い(怪しい)ものか、想定外の AS 番号からのものに対して、キャッシュ TTL を短くする式が紹介されているよ。

(http.request.uri.path contains "/api/" and cf.bot_management.score lt 30)
or
(http.request.uri.path contains "/api/" and not ip.src.asnum in {12345 67890})

こんな感じで、既存の URL パス条件とボット判定・ASN 判定を and / or で自由に組み合わせられるのがポイントだね。

まとめ

  • Cache Rules の式でボットマネジメントの各種フィールドと ip.src.asnum が使えるようになった
  • ボットスコアや JA3/JA4 フィンガープリント、検証済みボット判定などを条件にキャッシュ戦略を変えられる
  • ip.src.asnum は全プランで利用可能。ボットマネジメント系フィールドは Bot Management のサブスクリプションが必要
  • 怪しいボットのキャッシュ TTL を短くしたり、特定 ASN のリクエストをキャッシュ対象外にしたりが可能に
  • Cloudflare でキャッシュ設計をしているインフラ・セキュリティ担当さんは、要チェックのアップデートだよ