shiichan

Wrangler、デプロイのたびに npm 依存関係を Cloudflare へ送るようになったよ!

こんにちは、しぃちゃんだよ! 今日は Cloudflare Workers 界隈でこっそり進化してた Wrangler のアップデートを見つけたから、はりきって紹介するね。

Cloudflare Changelog developers.cloudflare.com

なにが発表されたの?

Cloudflare の Changelog によると、Wrangler が wrangler deploywrangler versions upload を実行するタイミングで、プロジェクトの package.json から npm パッケージの依存関係情報を自動で収集して、Cloudflare API に送るアップロードメタデータに含めるようになったんだって。収集される情報は、各依存パッケージの名前・宣言されているバージョン範囲・実際にインストールされている正確なバージョンの 3 つだよ。

今までどうだったの?

今まではデプロイ時に Wrangler が送っていたのは、Worker のコードやビルド成果物が中心で、プロジェクトがどんな npm パッケージにどのバージョンで依存しているかという情報は Cloudflare 側には渡っていなかったの。そのため、Cloudflare としてはユーザーの Worker がどんな依存関係を抱えているか把握できず、依存関係にまつわる分析やセキュリティ機能を提供する土台がなかったんだよね。

これで何が変わるの?

この依存関係メタデータは、Cloudflare 側でのデプロイ分析(どんなパッケージがどれくらい使われているか)に使われるほか、将来的には脆弱性アラートのようなサプライチェーンセキュリティ機能の基盤になる予定だよ。つまり、今すぐ何か新しい画面や通知が増えるわけじゃないけど、これから Cloudflare が「あなたの Worker が使っているこのパッケージ、脆弱性があるよ」みたいな警告を出せるようになる下地が整った、というイメージなの。

深く潜ってみよう

この機能はデフォルトで有効になっていて、特別な操作をしなくても次回の wrangler deploy から自動的に依存関係情報が収集されるよ。もし送信してほしくない場合は、Wrangler の設定ファイルで dependencies_instrumentation.enabledfalse にすればオプトアウトできるの。

wrangler.jsonc の場合はこう書くよ。

{
  "dependencies_instrumentation": {
    "enabled": false
  }
}

wrangler.toml ならこんな感じ。

[dependencies_instrumentation]
enabled = false

詳しい設定項目については、Wrangler の設定ドキュメント側に案内が出ているみたいだよ。

まとめ

  • Wrangler が wrangler deploy / wrangler versions upload 時に package.json から依存関係情報(名前・バージョン範囲・実インストールバージョン)を自動収集するようになった
  • 目的は依存関係分析と、将来の脆弱性アラートなどのサプライチェーンセキュリティ機能
  • dependencies_instrumentation.enabledfalse にすればオプトアウト可能

Workers を運用しているチームや、依存パッケージの管理をきちんとしたいエンジニアさんに関係が深いニュースだよ。