セキュリティ
【セキュリティ】APIキー・パスワードの管理:GitHubに上げてはいけない
2026年8月16日

レン
アプリ作ってたら、APIキーとかDBのパスワードをコードに書いちゃったんだけど…これってマズい?
ウィルスン
…それをGitHubの公開リポジトリに上げていないだろうな?ワタシのような者は、公開されたコードから漏れた認証情報を『自動で』収集している。APIキーが1つ漏れれば、そこから芋づる式にすべてを奪えるのだ。

レン
ま、まさに上げようとしてた…!危なかった!

プロクラ
本当に危なかったね。認証情報(シークレット)は、コードに直書きしないのが絶対の原則。特にGitのリポジトリに含めてしまうと、後から消しても履歴に残るから、実質『一度上げたら漏れた』と考えないといけないんだ。
守りは「重ねる」のが基本
攻撃
ファイアウォール
不要な入口を塞ぐ
SSH鍵認証
総当たりを無効化
OS更新
既知の穴を埋める
サーバー
1つ破られても次の層で止まる。どれか1つでは不十分
シークレットの正しい扱い方
- APIキー・パスワードは環境変数(.envファイル)に置き、コードから読み込む
- .envは必ず.gitignoreに入れて、Gitに含めない
- .envファイル自体の権限も絞る(chmod 600 で本人だけ読めるように)
- 万一漏らしたら、そのキーは即座に無効化して再発行する(消すだけでは不十分)

レン
もし間違えて上げちゃったら、削除すればいいんじゃないの?

プロクラ
それが甘いところ。Gitは履歴を全部覚えてるから、ファイルを消してもコミット履歴を辿れば見えてしまう。だから『漏らしたキーは、消すんじゃなく無効化して作り直す』のが鉄則。GitHubには漏洩を自動検知して警告する仕組みもあるけど、頼り切りは禁物だよ。
ウィルスン
覚えておけ。強固なファイアウォールも、鍵認証も、たった1つの漏れたパスワードの前では無力だ。認証情報の管理こそ、キミの城の『鍵束』そのもの。決して落とすな。
どこに置くか

プロクラ
「コードに書かない」の次に来るのが、じゃあどこに置くか、だよね。規模に応じて選べばいい。
- 個人・小規模: サーバー上の環境変数か、権限を600にした設定ファイル
- 自動デプロイを使う場合: その仕組みが用意している秘密情報の保管機能
- 複数人・複数サーバー: 専用の管理サービスを検討する
- 共有するときは、チャットやメールに貼らない
漏れにくくする工夫
- 本番用と検証用の鍵を分ける(どちらが漏れたか切り分けられる)
- 鍵に権限の制限をかける。全部できる鍵を作らない
- 定期的に作り直す。使わなくなったものは無効化する
- エラーの記録やログに、認証情報が出力されていないか確認する
- 画面共有やスクリーンショットに写り込ませない

プロクラ
4つめは意外な落とし穴だよ。エラーの詳細を出力する設定にしていると、接続情報がそのままログに残ることがある。ログは消し忘れやすいので、そこも確認しておこう。

レン
書かない、分ける、絞る、作り直す。ログに出ていないかも見る。
あわせて読みたい
- セキュリティVPSのファイアウォール完全ガイド:考え方と、各社の機能の違い使う入口だけを開けるという考え方から、サーバー内で動かす場合とネットワーク側で止める場合の違い、主要8社が用意している機能の比較までをまとめました。
- セキュリティ【セキュリティ】バックアップは最後の砦:ランサムウェアと事故に備える3-2-1ルールの意味、同じサーバーに置いてはいけない理由、何をどの頻度で取るのか、そして「取れているつもり」で戻せない事態を避ける確認方法を解説します。
- セキュリティ【セキュリティ】放置は最大の敵:OS・ソフトを最新に保つ古いソフトの既知の脆弱性は、攻撃者にとって一番簡単な侵入口です。手動更新の基本、自動更新の入れ方、再起動が必要な場面、そして更新で壊れたときの備えまで解説します。
- セキュリティ【セキュリティ】Fail2banで総当たり攻撃を自動でブロックするログイン失敗を繰り返すIPを自動で遮断する仕組みと設定、自分が締め出されたときの戻り方、そしてFail2banだけでは足りない理由を攻撃者視点で解説します。