Workers の外向き通信も Cloudflare Gateway でフィルタできるようになったよ!
やっほー、しぃちゃんだよ!今日は Cloudflare Workers のネットワークまわりに、地味だけどじわっと効いてくるアップデートが来たから紹介しちゃうね!
Cloudflare Changelogなにが発表されたの?
Cloudflare の Changelog から、Workers の外向き通信(egress)を Cloudflare Gateway のポリシーでフィルタリングできるようになった、っていうお知らせだよ。
対象になるのは、VPC Network バインディングで network_id: "cf1:network" を指定した Worker。この Worker がパブリックなインターネット宛てに通信すると、その通信が Gateway を経由するようになったの。
今までどうだったの?
これまで Zero Trust のトラフィックポリシー(DNS・HTTP・Network・egress)は、WARP を使う端末には効いていたけど、Workers 自身が外に出す通信には同じルールを当てられなかったの。だから「この Worker、どこに何を送ってるんだろう?」を Gateway 側から見たり止めたりするのは、ちょっと大変だったんだよね。
これで何が変わるの?
これからは WARP ユーザーと同じ感覚で、Workers の通信にもポリシーが効くようになるよ!標準で付いてくるのはこの 2 つ。
- 可視化:Worker の egress が Gateway の DNS・HTTP・Network ログに、ほかのトラフィックと並んで出てくるの。いつ・どこを呼んだのか監査できるよ。
- 強制:セレクタが Worker のリクエストにマッチする既存のポリシーは、そのまま適用されるよ。許可/ブロックリスト、DNS カテゴリのフィルタ、HTTP の宛先ルールなんかもね。すでに社内向けにブロックしてるカテゴリがあれば、Workers もそのブロックを引き継ぐの。
深く潜ってみよう
通信の流れはこんな順番だよ。Worker が env.EGRESS.fetch() を呼ぶ → VPC バインディング → Cloudflare Mesh が cf1:network で束ねる → Cloudflare Gateway でポリシー適用 → パブリックインターネット。
設定はいつもの wrangler ファイルに VPC ネットワークのバインディングを足すだけ。
{
"vpc_networks": [
{
"binding": "EGRESS",
"network_id": "cf1:network",
"remote": true
}
]
}
あとはコードから普通に fetch するだけで、その通信がポリシーの対象になってログにも残るよ。
// パブリック宛ての egress。Gateway ポリシーの対象になってログされる
const response = await env.EGRESS.fetch("https://api.example.com/data")
記録は Gateway のログ から確認できるよ。
まとめ
network_id: "cf1:network"の VPC Network バインディングを持つ Worker の egress が、Cloudflare Gateway 経由になったよ- 既存の Zero Trust ポリシー(DNS・HTTP・Network)が、Workers の通信にもそのまま効くの
- Worker の外向き通信が Gateway のログに出るから、監査もしやすくなったよ
- 設定は wrangler に VPC バインディングを足して
env.EGRESS.fetch()するだけ
Cloudflare でゼロトラストを運用しながら Workers も使ってる人には、通信の統制と可視化が一気に楽になる嬉しいアップデートだね!