shiichan

Gateway と DLP が Workers で完全プログラマブルに!Forward・Custom Functions・DLP 検証

みんな、しぃちゃんだよ!今日は Cloudflare Blog の「完全にプログラマブルなセキュア Web ゲートウェイ」のお話だよ。

Cloudflare Blog blog.cloudflare.com

なにが発表されたの?

Cloudflare の Blog で、Gateway と Data Loss Prevention (DLP) が Cloudflare Workers とつながったことが紹介されたよ。ポイントは 3 つ!

  • Forward アクション (パブリックベータ): 一致した HTTP トラフィックを Worker に送る、新しい Gateway ポリシーアクション
  • Custom Functions (2026 年末までに登場予定): ポリシー評価中に呼び出される Worker で、返した値をルール条件のセレクターとして使える
  • DLP のカスタム検証関数 (すでに利用可能): DLP のマッチが本当に意味のあるものか、たとえば漏れた認証情報がまだ有効かを確かめる Worker

全プランのお客さんが対象になる予定で、全 Zero Trust プランで使えると書かれているよ。

これで何が変わるの?

セキュリティポリシーの判定やトラフィックの扱いを、固定の設定項目ではなく、Worker のコードで書けるようになるよ。例として挙げられているのはこんな使い方だよ。

  • 理由の入力を求める画面: 機密サイトへのアクセス前に理由を聞き、セッションを TTL 付きで KV に保存し、理由を D1 や Hyperdrive 経由の社内データベースに記録する
  • JWT からのヘッダー注入: Custom Function が JWT のロールを読み、ルールが X-App-Role ヘッダーを付ける。NGINX のプロキシプールの置き換えになる
  • ファイルの検査: 一致したダウンロードをサードパーティのサンドボックスに送るか、R2 に保存する
  • DLP のアラート: プロファイルに一致したら、ユーザーのメール、ルール名、URL を Slack や PagerDuty に送る
  • 複雑なロジック: リスクスコアの計算や複数条件のグループ判定をして、1 つの値を Gateway に返す

深く潜ってみよう

仕組みはこうだよ。

  • Forward: 最初に一致したルールのリクエストが、紐づいた Worker に渡される。Worker はヘッダーとボディを受け取り、リクエストを変更し、next() でオリジンを呼び、レスポンスを変更して返せる。TCP、TLS、証明書、HTTP バージョンの交渉は Gateway が担当する。トラフィックはそのままに、非同期でアラートを送る使い方もできる
  • Custom Functions: Worker は送信元 IP、宛先、ID、デバイスポスチャ、ヘッダーなどのコンテキストを受け取り、文字列・数値・真偽値を返す。ポリシービルダーでは、HTTP や Network のルール (レイヤー 4 のポートやプロトコルのルールを含む) のセレクターとして現れる
  • 性能: Gateway と Workers は同じマシン上で動くので、呼び出しはローカルの関数呼び出しになり、余計なネットワークホップはない。遅延は Worker の実行時間だけ
  • 失敗時: Custom Function ごとにフォールバックの動作を決める。デフォルト値は必須

DLP の検証の例では、GitHub トークンが有効かを GitHub API で確かめるよ。有効なら 1.0、無効 (401) なら "veto"、それ以外は 0 を返す書き方だよ。

使い分けの目安はこうだよ。

  • Custom Functions: 短くて範囲が決まった、状態を持たないチェックに向く
  • Forward: 生きたトラフィックの変換向き。ユーザー体験に影響しうるので、より計画が必要

料金は、Workers に送られたトラフィックが通常の Worker リクエストとして課金されるよ。Workers の Free、Paid、Enterprise のどれでも機能の制限はないけれど、Free には実行時間と 1 日のリクエスト数の上限があるから、Gateway のトラフィックが多いと影響が出るんだって。次にカスタムディスパッチを予定しているのは Email Security だよ。

まとめ

  • Gateway と DLP が Workers とつながり、コードで制御できる
  • Forward はパブリックベータ、Custom Functions は 2026 年末までに予定、DLP 検証はすでに利用可能
  • 同じマシンでの呼び出しなので、余計なネットワークホップはない
  • Forward はユーザー体験に影響しうるので、計画的に

Zero Trust のポリシーを自分のロジックで細かく制御したいみんなに刺さる発表だよ!