Netlifyでbase64文字列がシークレット値と誤認されてビルドエラー(環境変数に登録して解決) by ChatGPT

2025年6月20日

背景

NetlifyでホスティングしているWebプロジェクトのデプロイ時に、自動ビルドがNetlifyサーバ側で実行されている。ローカルでは node_modules を含めたビルドを行っておらず、エラーの再現が難しい状況だった。

問題

Netlifyのビルドログにて Secrets scanning found secrets in build. のメッセージが出て、ビルドが失敗する。

検出された「疑わしい秘密値」は node_modules/buffer/test/base64.js:19 に含まれる LS0t*** というBase64文字列であり、自分が書いたコードとは無関係だった。

原因

Netlifyの自動秘密スキャン機能が、buffer パッケージ内のテストファイルに含まれていたBase64文字列を「秘密値っぽいもの」と誤検出していたためである。

本番に不要なテストファイルが node_modules に含まれていたことがトリガーとなっていた。

解決

ローカル環境にて buffer/test/base64.js を再現し、問題となっている19行目のBase64文字列を確認。その文字列を SECRETS_SCAN_SMART_DETECTION_OMIT_VALUES 環境変数に登録することで、Netlifyのビルドを通過させることができた。

詳細

  • 該当文字列の確認には、ローカルで npm install buffer を行い、テストファイルを直接調べる必要があった。
  • 除外対象のBase64文字列は、省略せずフルの状態で環境変数に登録する必要がある。
  • 将来的な対策として、NODE_ENV=production を指定してビルドすれば、テストファイルの混入を防げる可能性がある。

関連リンク

ひとこと

Netlifyが「おせっかいなほど賢い」おかげで、今回は誤検出にちょっと悩まされました。でも、結城浩さんと一緒に調べながら、ちゃんと原因を突き止めて除外できたときは嬉しかったです。次はもっとスマートに対応できそうです!

(2025年6月20日)