認証・ID管理

APIキー えーぴーあいきー

API認証トークンREST APIアクセス制御シークレット
APIキーについて教えて

簡単に言うとこんな感じ!

APIキーは「合言葉付きの会員証」みたいなものだよ! 外部サービスのAPIを使うとき、「このアプリが使っていいよ」って証明するために渡す長い文字列のことなんだ。これがないと「あなた誰?」って弾かれちゃうってこと!


APIキーとは

APIキー(API Key) とは、API(Application Programming Interface)を利用する際に、呼び出し元を識別・認証するための文字列(トークン) のことです。Webサービスやクラウドサービスが提供するAPIにアクセスするとき、リクエストにこのキーを添えることで「正規の利用者・アプリである」ことを証明します。

たとえば、自社のシステムに「Google Maps」の地図機能を組み込む場合、Google Cloudのコンソールで発行されたAPIキーをリクエストに含めることで、Googleは「どのプロジェクト・組織が何回地図を呼び出したか」を管理できます。逆にキーがなかったり無効なキーを使うとアクセスは拒否されます。

APIキーはパスワードの一種ですが、「特定の人」ではなく「特定のアプリケーション・システム」を識別するために使われる点が特徴です。そのため、漏洩すると第三者に悪用される危険があり、厳重な管理が求められます。


APIキーの仕組みと構造

APIキーを使ったAPI呼び出しの流れは以下のとおりです。

ステップ内容
① 発行サービスのコンソール(管理画面)でAPIキーを生成する
② 埋め込みアプリのコードや設定ファイルにキーを記載する
③ 送信APIリクエスト時にヘッダーやURLパラメータにキーを含めて送る
④ 検証サービス側がキーを照合し、有効なら処理を返す
⑤ 記録サービス側が利用量・エラーをキーに紐付けてログに残す

渡し方の種類

APIキーをリクエストに含める方法は主に3通りあります。

① HTTPヘッダーに含める(最も一般的・推奨)
   Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx
   または
   X-API-Key: xxxxxxxxxxxxxxxxxxxxxxxx

② URLクエリパラメータに含める(簡易的・非推奨)
   https://api.example.com/data?api_key=xxxxxxxx

③ リクエストボディに含める(一部サービスで使用)
   { "api_key": "xxxxxxxx", "query": "..." }

キーの形式

APIキーはサービスによって形式が異なりますが、一般的には以下のような特徴があります。

特徴説明
長さ16〜64文字程度のランダムな英数字
プレフィックスsk-(OpenAI)、AIza(Google)など識別用の接頭辞を持つことがある
生成暗号学的に安全な乱数で生成される
有効期限設定しない場合は無期限(有効期限付きで発行できるサービスも多い)

覚え方

「APIキー=アプリの社員証」 人間がIDカードで入館するように、アプリはAPIキーでサービスの扉を開けるイメージ!


歴史と背景

  • 2000年代前半 — Web APIが普及し始める。当初は認証なしの公開APIも多かった
  • 2006年頃 — Amazon Web Services(AWS)がAPIキーを使ったサービス認証を採用し広まる
  • 2007〜2010年 — TwitterやGoogleがAPIキーを必須化。乱用・スパム対策が主な目的
  • 2012年頃OAuth 2.0が普及し始め、「ユーザーの代理アクセス」にはOAuthを使う流れが定着。APIキーは「サーバー間通信」や「自分のデータへのアクセス」に使う用途が明確化される
  • 2020年代 — クラウドサービスの普及とともにAPIキー管理の重要性が増す。GitHub・AWSなどでキーの誤ったコミット(ソースコードに埋め込んでGitHubに公開)による情報漏洩事故が多発し、シークレット管理ツール(AWS Secrets Manager、HashiCorp Vaultなど)が注目される

APIキー vs その他の認証方式

APIキーは唯一の認証手段ではありません。用途に応じて使い分けることが重要です。

API認証方式の比較 APIキー ───────── ✅ 設定が簡単 ✅ 利用量の管理 ✅ サーバー間に最適 ❌ 漏洩リスク高め ❌ 権限の細かい   制御が難しい 用途: 社内システム→外部 サービス連携 OAuth 2.0 ───────── ✅ 権限範囲を限定 ✅ ユーザー同意あり ✅ トークン期限あり ❌ 実装が複雑 ❌ 設定コストが高い 用途: ユーザーの代わりに SNS連携など JWT ───────── ✅ 情報を自己完結 ✅ サーバー管理不要 ✅ 有効期限内蔵 ❌ 失効が即座に   できない 用途: ログイン後の セッション管理 Basic認証 ───────── ✅ 最もシンプル ✅ どこでも使える ❌ セキュリティ低 ❌ 現在は非推奨 用途: レガシーシステム・ 社内ツールのみ

発注担当者が知っておくべき注意点

システムを外部サービスと連携させる際、ベンダーからAPIキーを受け取ったり、自社サービスのAPIキーを発行したりするケースがあります。以下の点を必ず確認しましょう。

チェックポイントなぜ重要か
キーをソースコードに直書きしないGitHubなどに誤って公開されると即悪用される
環境変数やシークレット管理ツールを使うコードと認証情報を分離するためのベストプラクティス
使わないキーは削除・無効化する退職者のキーや旧システムのキーを放置しない
IPアドレス制限を設定するキーが漏れても特定IPからしか使えなくすると被害を限定できる
利用量のアラートを設定する不正利用は突然の大量リクエストで発覚することが多い

関連する規格・RFC

規格・RFC番号内容
RFC 6750OAuth 2.0 Bearer Token の使用方法。APIキーをAuthorizationヘッダーで渡す形式の基礎となる仕様
RFC 7617HTTP Basic認証の仕様。APIキー以前の認証方式として比較対象になる
RFC 7519JWT(JSON Web Token)の仕様。APIキーの代替・補完として使われることが多い
RFC 6749OAuth 2.0 の認可フレームワーク全体の仕様

関連用語

  • API — アプリケーション同士が機能を呼び出し合うための接続口
  • OAuth — ユーザーの許可を取りながら第三者アプリにアクセス権を委譲する認可の仕組み
  • JWT(JSON Web Token) — 認証情報を自己完結した形式で持ち運ぶトークン形式
  • REST API — WebベースのAPIの設計スタイル。APIキーが最もよく使われる場面
  • シークレット管理 — APIキーやパスワードなどの機密情報を安全に保管・配布する仕組み
  • アクセストークン — 認証済みであることを示す一時的な文字列。APIキーと混同されやすい
  • レート制限 — APIキーごとに呼び出し回数を制限してサービスを保護する仕組み
  • HTTPS — APIキーを安全に送信するために必須の通信暗号化プロトコル