IT-Q

.env をリポジトリに入れてはいけないのはなぜですか。

DBのパスワードやAPIキー、アプリケーションキーが含まれるためです。厄介なのは、あとから削除しても Git の履歴に残ること。ファイルを消すだけでは対処になりません。

面接官が見ているのは前提の補強。

これは「環境ごとに違う設定値の扱い方として正しいのはどれですか。」への追撃質問です。

よくある答えと、面談でどう見られるか

  • DBパスワードやAPIキーが含まれ、一度コミットすると履歴に残るから
    その通りです。漏れた場合はファイルを消すだけでは足りず、鍵の再発行が必要になります。
  • 環境ごとに内容が違うのでコンフリクトするから
    それも起きますが、本質は中身が秘密情報であることです。
  • Laravel が自動生成するので不要だから
    自動生成されるのは .env.example です。.env は自分で用意します。
  • ファイルサイズが大きいから
    サイズは関係ありません。

面接官は何を見ているか

  • 認証情報が含まれることを挙げた
  • リポジトリを見られる全員に漏れると言えた
  • 一度コミットすると履歴に残る点に触れた

模範解答

DBのパスワード、APIキー、アプリケーションキーなどが含まれるからです。リポジトリにアクセスできる全員に渡ることになりますし、公開リポジトリなら世界中に公開されます。厄介なのは、後から削除しても Git の履歴には残ることです。漏れた場合はファイルを消すだけでは足りず、鍵そのものを再発行する必要があります。