← inaro.devAI駆動開発 学習ツール

APIキーと秘密情報の管理

なぜ学ぶか: 「AIとアプリを作ったら、APIキーが漏れて高額請求が来た」— これは実際に多発している事故です。セキュリティの中でも件数が多く、被害も分かりやすいのがこれ。だからこのフェーズの先頭に置きました。キーの扱いの鉄則を、ここで体に染み込ませます。

秘密情報=漏れたら悪用される値

APIキー・DBのパスワード・トークンなど。これらが漏れると、他人があなたの権限で操作したり課金したりできます。

鉄則①:コードに直書きしない

キーは環境変数(.env.local)に置き、コードからはprocess.envで読みます。直書きはGit経由で漏れます。

鉄則②:ブラウザに渡さない

秘密キーはサーバー側でだけ使います(Route Handler)。NEXT_PUBLIC_を付けたら世界に公開と同義です。

鉄則③:漏れたら即無効化

GitHubにpushしてしまったら、消しても手遅れ。すぐキーを作り直して古いのを無効化します。「消せば大丈夫」は誤りです。

コード例

// ❌ 絶対NG: コードに直書き(Git に残り、漏れる)
// const apiKey = "sk-abc123...";

// ❌ 絶対NG: ブラウザに公開(誰でも開発者ツールで見られる)
// const apiKey = process.env.NEXT_PUBLIC_API_SECRET;

// ✅ 正解: 環境変数(無印)+ サーバー側でだけ使う
// app/api/xxx/route.ts の中で:
export async function POST() {
  const apiKey = process.env.API_SECRET; // サーバーでのみ読める
  console.log("キー設定済み:", Boolean(apiKey));
  return Response.json({ ok: true });
}

「直書きしない・ブラウザに渡さない・漏れたら無効化」。この3つだけで、最も多い事故のほとんどを防げます。AIのコードでは特に2番目(NEXT_PUBLIC_の付け間違い)を目視で確認しましょう。

ステップ 1 / 2

※ カリキュラムの内容はAIが生成しており、誤りが含まれる場合があります。正確な情報は公式ドキュメント等でご確認ください。