.env ファイルとシークレットファイルの Git での無視

API キーやシークレットを保護するための .env ファイルの安全な git 無視方法。.env.local、.env.production、フレームワーク固有の環境ファイル処理を解説します。

Pattern

詳細な説明

環境ファイルは .gitignore で最もセキュリティ上重要なパターンの1つです。データベース認証情報や API キーを含む .env ファイルを1つコミットしただけで、特に公開リポジトリではデータ漏洩につながる可能性があります。

.env ファイルとは何か?

.env の規約(dotenv ライブラリで普及)は、キーと値のペアとして設定を保存します:

DATABASE_URL=postgres://user:password@host:5432/db
STRIPE_SECRET_KEY=sk_live_abc123
JWT_SECRET=my-super-secret-key

これらのファイルは実行時に process.env にロードされます。コードの変更なしに、異なる環境(開発、ステージング、本番)で異なる設定を使用できます。

推奨される無視パターン:

.env
.env.local
.env.*.local
.env.development.local
.env.production.local

コミットすべきものと無視すべきもの:

多くのフレームワーク(Next.js、CRA、Vite、Laravel)は env ファイルの階層構造をサポートしています。一般的な規約:

  • コミットする .env.example — すべての必要な変数名を含むがプレースホルダー値のテンプレート。実際のシークレットを公開せずに、アプリが必要とする環境変数を文書化します。
  • コミットする .env.development — 機密性のない開発用デフォルト値(例: API_URL=http://localhost:3000)。
  • 無視する .env.local — ローカルテスト用の実際の API キーを含む可能性がある個人的なオーバーライド。
  • 無視する .env.production — 本番シークレットはホスティングプラットフォームの環境変数設定から取得すべきであり、コミットされたファイルからではありません。

誤ってシークレットをコミットした場合の対処:

  1. 直ちに漏洩した認証情報をローテーションします(新しい API キー、新しいデータベースパスワード)。
  2. ファイルを削除します:git rm --cached .env
  3. .gitignore に追加してコミットします。
  4. 削除後も古いコミットでアクセス可能なため、git filter-branchBFG Repo-Cleaner を使って git 履歴からシークレットを削除することを検討してください。

予防策: git-secrets や、コミット前に API キーに似たパターンをスキャンする pre-commit フックなどのツールを使用しましょう。

ユースケース

スタートアップが公開 GitHub リポジトリで AWS 認証情報が露出していることを発見し、将来のシークレット漏洩を防ぐために適切な .env 処理を設定する必要があります。

試してみる — .gitignore Generator

フルツールを開く