ひとことで言うと
APIキーローテーションとは、サービスへのアクセスに使用するAPIキーを一定周期または特定のイベント(漏えい・メンバー退職等)をトリガーに、古いキーを無効化して新しいキーへ置き換える運用プロセスです。同じキーを無期限に使い続けると、仮に漏えいしていてもその事実に気づきにくく、被害期間が最大化してしまいます。
ローテーションの間隔はサービスやリスクレベルによって異なりますが、一般的なガイドライン(NIST SP 800-57等)では90日ごとの交換が推奨されています。クラウドプロバイダのコンソールや、HashiCorp VaultのようなSecrets Management Systemを使うと、ローテーションを半自動化できます。
- 相手がログインなしで開ける状態か確認する
- PCとスマホで最低1回ずつ表示を確認する
- 内部情報・個人情報・不要な外部送信が残っていないか見る
- レビュー期限と修正時の差し替え方を決めておく
HTML共有で関係する場面
AIで生成したHTMLにOpenAIやFirebaseのAPIキーが埋め込まれていた場合、そのHTMLを共有してしまった時点でキーのローテーション(即時無効化と再発行)が必要です。「見た人が限られているから大丈夫」という判断は危険で、URLが記録されたログやキャッシュからキーが流出する可能性があります。
共有サービス自体が使うAPIキー(ストレージサービスのキー等)も管理対象です。チームメンバーが退職した際は、退職者が知りうるAPIキーを速やかにローテーションすることで、意図しないアクセスを防止できます。特に管理者権限を持っていたメンバーの退職後は優先度を上げて対応してください。
よくある誤解
「古いキーを削除すれば新しいキーに自動で切り替わる」という誤解があります。実際には、古いキーを参照しているシステム・ファイルをすべて新しいキーに更新してから古いキーを削除する順番が重要です。逆の順番で削除すると、更新し忘れた箇所でエラーが発生してシステムが停止します。
「APIキーのローテーションは大企業だけが気にすること」という思い込みもあります。個人開発のAIツールでも、漏えいしたOpenAI APIキーを使われると意図しない課金が発生します。無料プランでもAPIキーの管理と定期ローテーションは習慣として持つべきです。
安全に使うための注意点
ローテーションを安全に行うには「Blue/Green方式」が有効です。まず新しいキーを発行してシステムを新しいキーに切り替え、しばらく動作を確認してから古いキーを削除します。この手順を踏むことで、切り替え漏れによるシステム停止を防げます。
APIキーを環境変数やシークレット管理サービス(AWS Secrets Manager・Doppler等)に保存する習慣を持つと、ローテーション時の更新箇所が一か所に集約されます。HTMLファイルやソースコードに直接書かない運用ルールをチームで設定し、CIパイプラインのシークレットスキャンで自動検出できるようにしてください。
よくある質問
APIキーを誤って共有してしまったことに後から気づいた場合、まず何をすべきですか?
すぐにそのキーを発行元サービスの管理画面で無効化してください。次に新しいキーを発行し、利用している箇所を更新します。その後、漏えいしたキーが使われた形跡がないかAPIの利用ログを確認してください。
90日ごとのローテーションは厳しすぎませんか?より長い間隔でも大丈夫ですか?
間隔はリスク評価次第です。クレジットカード情報や個人情報へのアクセス権を持つキーは短いサイクルが必要ですが、読み取り専用のパブリックデータAPIなら半年〜1年でも許容されます。使用用途のリスクレベルに応じて間隔を決めてください。
複数のサービスで同じAPIキーを使い回している場合、ローテーションはどう進めればよいですか?
同じキーの使い回しはそれぞれのリスクが連鎖するため、まずサービスごとに専用キーを発行することを推奨します。使い回しをやめる段階的な計画を立て、移行が完了したら古い共通キーを廃止してください。