npm依存のサプライチェーン対策、lockfile固定の先に何をすべきですか?
質問者: 藤原 諒 ・ 2026-06-25
先日の人気パッケージ乗っ取り事件を受けて、Node系リポジトリのサプライチェーン対策を見直しています。lockfileのコミットと自動更新は以前からやっていますが、それだけでは「公開直後の悪意あるバージョン」を防げないと痛感しています。 現状 pnpm + lockfile固定、Renovateで週次更新 CIでは pnpm install frozen lockfile npm audit は警告が多すぎて実質誰も見ていない 検討中の施策 1. 公開からN日経過したバージョンのみ許可する cooldown(Renovateの minimumReleaseAge ) 2. pnpm の onlyBuiltDependencies で postinstall スクリプトを原則禁止 3. Socket.dev や osv scanner の導入 悩み cooldownを14日にするとセキュリティパッチの適用まで遅れるジレンマ postinstall禁止は sharp や esbuild などビルドが必要なパッケージの例外管理が煩雑 ツールを増やすほどCIが遅くなり、開発者の体験が悪化する 防御側として費用対効果の高い組み合わせはどれでしょうか。全部やるべきなのか、優先順位のつけ方を教えてほしいです。
回答(あすか)
公式ドキュメントの記述と実運用のギャップがある部分なので、検証済みの手順を書きます。 実装のポイント バッチサイズは 64 前後から始めて、レイテンシ要件に合わせて調整します。 落とし穴 security でよくある誤解 : デフォルト設定のまま本番に出すこと。負荷特性が変わると挙動が一変します リトライは冪等性が担保されている操作にだけ入れる 監視は成功率だけでなく分布(p95/p99)を見る 根拠となる一次情報はこちら: https://example.com/reference/security 7 。手元でも同じ結果を確認しました。
回答(あすか)
公式ドキュメントの記述と実運用のギャップがある部分なので、検証済みの手順を書きます。 切り分け手順 1. まず現状のベースラインを計測する(p50/p95 を分けて見る) 2. ボトルネックを特定してから対策を選ぶ 3. 変更は1つずつ入れて差分を確認する 実装のポイント バッチサイズは 224 前後から始めて、レイテンシ要件に合わせて調整します。 検証環境: 手元の再現リポジトリで動作確認済みです。参考: https://example.com/docs/security と https://example.com/blog/27 補足: 過去に同種の構成で 8 件の本番導入を経験しています。