コンテンツにスキップ

秘密情報を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 に伝える指示書です。

.gitignore
.env
.env.local

これで .env は履歴に載らなくなります。チームには、値の入っていない見本(.env.example など)だけを共有し、各自が自分の環境で値を入れる——これが定番の運用です。

公開・共有の前に「何が含まれるか」を確認する

Section titled “公開・共有の前に「何が含まれるか」を確認する”

.gitignore を入れても、入れる前にうっかりコミットしていたなら意味がありません。GitHub に上げる前、あるいは誰かにリポジトリを渡す前に、コミットの中身を一度点検します。

  1. これから共有・公開する内容に、秘密情報が紛れていないかを確認する。

  2. 判断が難しければ、AIに一覧させて確認してもらう(下のプロンプト参照)。

  3. .env などの秘密ファイルが「追跡対象外」になっているかも合わせて確認する。

もし漏らしてしまったら:消すだけでは終わらない

Section titled “もし漏らしてしまったら:消すだけでは終わらない”

最も大事な心得です。秘密情報をコミットしてしまったと気づいたとき、ファイルから消して上書きするだけでは不十分です。前述のとおり、値は履歴に残っており、公開済みなら誰かが既に控えているかもしれません。

秘密情報の漏洩は、プロトタイプであっても高額請求・情報漏洩・アカウント乗っ取りという現実の損害に直結します。しかも Git の履歴という性質上、「気づいたときには手遅れ」になりやすい。だからこそ、事後対応より最初の予防——環境変数に置き、.gitignore で外し、公開前に確認する——が効きます。知識ゼロでも、この3点だけは必ず習慣にしてください。