APIキー・シークレット管理
更新日:
APIキーやトークンは「その文字列を持っている人=本人」とみなされる鍵。漏れると他人があなたの権限をすべて使える(勝手に課金される、データを消される等)。生成AIで開発するときに最も事故が起きやすいポイント。
よくある漏洩パターン
- コードに直接書いて Git に commit → 履歴に残り、消しても復元できる
- ブラウザで動くコードに埋め込む → 開発者ツールで誰でも見られる
- ログやエラーメッセージに出力してしまう
- AIチャットやスクリーンショットに貼り付けてしまう
- リポジトリを誤って public にする
対策
1. 環境変数に分ける
# .env.local (このファイルは Git に含めない)
OPENAI_API_KEY=sk-xxxx# .gitignore
.env*- 本番環境では各サービスのシークレット機能を使う(例: Cloudflare の
wrangler secret put)
2. ブラウザに送られる値に注意
- Next.js の
NEXT_PUBLIC_付き環境変数などはブラウザに配信される=公開情報 - 環境変数に入れていても、ブラウザで使えば見える
- 秘密キーはサーバー側の処理でだけ使う
3. キーの種類を見分ける
- 公開して良いキー(publishable key)と秘密キー(secret key)が分かれているサービスがある(Stripe等)
- 種類が分からないときは秘密キーとして扱う
4. 最小権限
- 用途ごとにキーを分け、必要な権限だけ付ける
- 「全権限キー」を使い回すと、漏れたときの被害が最大になる
漏れたときの対応
- まずキーを無効化(revoke)して新しいキーを発行 ← 最優先
- その後に原因調査・コード修正
(原因を調べている間にも悪用されるため、順番が大事)
AIへの指示例(CLAUDE.md / AGENTS.md に書いておく)
「APIキーやパスワードはコードに直書きせず、必ず環境変数から読むこと。.env ファイルは commit しないこと」