秘密情報をGitにコミットしない
この章でわかること: APIキーやパスワードといった秘密情報を、なぜ Git(バージョン管理)に載せてはいけないのか。そして「載せない」ための具体的なやり方。これは非エンジニアが最も踏みやすい実事故です。
Git は「消したはずの記録」も残る場所
Section titled “Git は「消したはずの記録」も残る場所”Git は、コードの変更履歴をすべて記録しておく仕組みです。いつ・誰が・どこを変えたかを、あとから丸ごとたどれます。開発ではとても便利な性質ですが、秘密情報にとっては危険な性質でもあります。
さらに、そのコードを GitHub などに上げると、チームで共有され、設定によっては世界中に公開されます。一度コミット(記録)された秘密情報は、あとで削除しても履歴に残り続ける——これが事故の本質です。
これは前章のAPIキーをフロントに置く危険性とは別の話です。あちらは「利用者の画面に出さない」、こちらは「バージョン管理に載せない」。両方守って初めて安全になります。
秘密はコードに直書きせず、環境変数へ
Section titled “秘密はコードに直書きせず、環境変数へ”対策の起点はシンプルです。秘密情報をコードの中に直接書かないこと。
代わりに、.env という専用ファイルに「環境変数」としてまとめます。コードは「鍵そのもの」ではなく「鍵の置き場所の名前」だけを参照します。金庫の中身をメモ用紙に書き写さず、金庫の番号だけを扱うイメージです。
# .env(このファイルは共有しない)OPENAI_API_KEY=sk-1234_本物の秘密キーDATABASE_URL=postgres://user:password@host/dbコード側は OPENAI_API_KEY という名前を読むだけ。秘密の値そのものはコードに現れません。
.gitignore =「Gitに載せない」指定
Section titled “.gitignore =「Gitに載せない」指定”.env を作っただけでは不十分です。放っておくと、.env も一緒にコミットされてしまいます。そこで .gitignore という設定ファイルに .env を書き加えます。これは「このファイルは追跡しないでください」と Git に伝える指示書です。
.env.env.localこれで .env は履歴に載らなくなります。チームには、値の入っていない見本(.env.example など)だけを共有し、各自が自分の環境で値を入れる——これが定番の運用です。
公開・共有の前に「何が含まれるか」を確認する
Section titled “公開・共有の前に「何が含まれるか」を確認する”.gitignore を入れても、入れる前にうっかりコミットしていたなら意味がありません。GitHub に上げる前、あるいは誰かにリポジトリを渡す前に、コミットの中身を一度点検します。
-
これから共有・公開する内容に、秘密情報が紛れていないかを確認する。
-
判断が難しければ、AIに一覧させて確認してもらう(下のプロンプト参照)。
-
.envなどの秘密ファイルが「追跡対象外」になっているかも合わせて確認する。
もし漏らしてしまったら:消すだけでは終わらない
Section titled “もし漏らしてしまったら:消すだけでは終わらない”最も大事な心得です。秘密情報をコミットしてしまったと気づいたとき、ファイルから消して上書きするだけでは不十分です。前述のとおり、値は履歴に残っており、公開済みなら誰かが既に控えているかもしれません。
秘密情報の漏洩は、プロトタイプであっても高額請求・情報漏洩・アカウント乗っ取りという現実の損害に直結します。しかも Git の履歴という性質上、「気づいたときには手遅れ」になりやすい。だからこそ、事後対応より最初の予防——環境変数に置き、.gitignore で外し、公開前に確認する——が効きます。知識ゼロでも、この3点だけは必ず習慣にしてください。