API キー
API キー とは何ですか?
API キーサービスが発行する静的なシークレット文字列。呼び出し元を識別・認証するため、通常は各 API リクエストのヘッダーやクエリパラメータで送信される。
API キーは、バックエンド API に対してプロジェクト、サービスアカウント、開発者を識別する、長くランダムに生成された文字列です。発行も利用も簡単ですが、その保証は弱いものです。識別する対象は呼び出し元であってユーザーではなく、既定では失効せず、紐づけられた権限がそのまま付与されます。これらは静的なベアラーシークレットであるため、その文字列を入手した者は誰でも、キーが失効されるまで正規の呼び出し元になりすますことができます。
最も多い失敗パターンは、ソース管理を経由した漏洩です。GitHub は、2024 年に同プラットフォーム全体で 3,900 万件 を超えるシークレットが露出したと報告しており、GitGuardian の調査レポート State of Secrets Sprawl では、スキャンしたプライベートリポジトリの約 8% に AWS IAM キーが見つかりました。2025 年の例では、公開された「Private-CISA」リポジトリにおいて、GitGuardian の研究者 Guillaume Valadon が、米国政府システムに紐づく AWS GovCloud の資格情報、平文パスワード、SAML 証明書の露出を発見しました。キーは、モバイルアプリ(逆コンパイルされた APK)、フロントエンドの JavaScript バンドル、CI ログ、スクリーンショットを通じても漏洩します。
防御策としては、キーをコードではなくシークレットマネージャに保管すること、プロバイダ側のシークレットスキャンとプッシュ保護を有効化すること、各キーを最小限のエンドポイントにスコープ制限すること、IP や HTTP リファラーで制限すること、有効期限を設定して定期的にローテーションすること、露出時には即座に失効することが挙げられます。エンドユーザーの認可や価値の高い操作には、資格情報をユーザー・オーディエンス・短い有効期間に結びつける OAuth 2.0、mTLS、あるいは HMAC 署名付きリクエストを優先してください。
flowchart LR
A[開発者が API キーを発行] --> B[キーをアプリや設定に埋め込み]
B --> C{安全に保管されているか}
C -->|シークレットマネージャ + スキャン| D[呼び出し元 -> API リクエスト<br/>Authorization ヘッダー]
C -->|リポジトリ / APK / ログに混入| E[シークレットスキャナや攻撃者が<br/>キーを収集]
E --> F[失効まで<br/>なりすましと悪用]
D --> G[スコープ + IP 許可リスト + ローテーションで<br/>影響範囲を限定]● 例
- 01
Authorization: ApiKey sk_live_abc123...
- 02
Stripe、Google Maps、Twilio の各 API をプロジェクト単位の API キーで利用する。
● よくある質問
API キー とは何ですか?
サービスが発行する静的なシークレット文字列。呼び出し元を識別・認証するため、通常は各 API リクエストのヘッダーやクエリパラメータで送信される。 サイバーセキュリティの ID とアクセス カテゴリに属します。
API キー とはどういう意味ですか?
サービスが発行する静的なシークレット文字列。呼び出し元を識別・認証するため、通常は各 API リクエストのヘッダーやクエリパラメータで送信される。
API キー からどのように防御しますか?
API キー に対する防御は通常、上記の定義で述べたとおり、技術的統制と運用上の実践を組み合わせます。