製品プロフィール

API キー

共有シークレット

1 つの秘密の文字列で呼び出し元を識別する最も単純な方式。サービス間連携やスクリプトで手軽に使える。

3つの要点
TL;DR
  1. 秘密の文字列 1 本で呼び出し元を識別する方式。
  2. とにかく単純で CI やスクリプトに導入が速い。
  3. ユーザー認証や細かい権限制御には不向き。

基本情報

仕様と立ち位置

製品・技術の概要API キー1 つの秘密の文字列で呼び出し元を識別する最も単純な方式。サービス間連携やスクリプトで手軽に使える。
種別
共有シークレット
目的
認証主に機械間)
トークン/形式
API キー文字列
最大の強み
とにかく単純で導入が速いサービス間・CI/スクリプト向け
代表的な用途
サービス間 API 呼び出し社内ツール・スクリプト / 簡易な利用制限

選定ガイド

選定ポイント

採用する理由と、事前に受け入れるべきトレードオフを分けて確認します。

採用に向く条件

選ぶ理由

  1. とにかく単純で導入が速い
  2. サービス間・CI/スクリプト向け
  3. 実装の負担が小さい

事前に確認する条件

考慮すべき点

  1. 漏れたら即なりすまし(ローテーション必須)
  2. 細かい権限制御に不向き
  3. ユーザー認証には弱い

詳しい解説

もっと詳しく

どんな仕組みか

API キーは、API へのアクセスに使う単純な鍵(文字列)です。リクエストにキーを添えて送り、サーバー側は「どのアプリ/どの契約からの呼び出しか」を識別します。

本人(人間)の認証というより、「どのアプリケーションからのアクセスか」を見分けるための識別子に近い、と捉えると役割がはっきりします。

横にスクロール

APIキーを一度だけ発行してシークレット管理へ保存し、API入口でハッシュ照合、状態、期限、送信元、対象サービス、流量を検証してからAPIが操作権限を判定し、新旧キーを安全に切り替える流れ
APIキーの平文はコードやログへ残さず、実行時にシークレット管理から取得してHTTPSヘッダーで送ります。API入口はキーの照合だけでなく、失効状態、期限、送信元、対象サービス、流量を検証し、API側が操作権限を判定します。更新は新しいキーの利用を確認してから古いキーを失効します。

どう動くのか

呼び出し側はヘッダなどにキーを付けてリクエストし、サーバーはそのキーが有効かを確認します。

GET /v1/data
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxx

キーごとに利用元を識別できるため、呼び出し回数の制限(レート制限)、使用量の計測、キー単位の無効化といった運用に使えます。多くのサービスは、キーに接頭辞(sk_live_ 等)を付けて種別を判別しやすくし、サーバー側ではキーそのものではなくハッシュ値を保存して、DB 漏洩時にも原本が漏れないようにします。

他の方式との違い

OAuth 2.0 とよく比較されます。

観点API キーOAuth 2.0
性質単純な共有鍵同意に基づくアクセス委譲
識別対象アプリ/契約利用者の権限(スコープ)
権限の粒度粗い(キー単位)細かい(スコープ単位)
有効期限基本は長命(手動失効)短命+リフレッシュ
向く場面自社・サーバー間連携第三者への限定委譲

「自社で発行し、自社サービスやサーバー間で使う」ならば API キー、「第三者アプリに利用者の権限を限定して委譲する」ならば OAuth 2.0、という使い分けになります。

使いどころ・注意点

サーバー間連携や開発者向け API の入口として、手早く導入できるのが利点です。一方で共有鍵ゆえに漏洩リスクが高く、露出すると悪用されやすい点に注意が必要です。

漏洩対策と最小権限

キーはソースコードや公開リポジトリに絶対に書かず、環境変数やシークレット管理(Vault 等)で保管します。用途ごとにキーを分け、可能ならキーに権限スコープと IP 制限を紐づけ、定期的にローテーション、不要になったら失効させます。GitHub 等での誤コミットは自動検知・失効の対象になるほど頻発するため、コミット前スキャンも有効です。人間のログインには使わず、機密度の高い操作には別の強い認証を併用します。

総じて API キーは、導入の手軽さと引き換えに漏洩と権限粒度の弱さを持つ方式で、ハッシュ保存・最小権限・ローテーションを前提に、主にサーバー間・開発者向けの入口として使うのが適切です。

実装・運用の視点

API キーを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

サービス間 API 呼び出し

比較で見る軸

種別: 共有シークレット / 目的: 認証(主に機械間) / トークン/形式: API キー文字列

導入後に効く点

サービス間・CI/スクリプト向け

先に潰すリスク

漏れたら即なりすまし(ローテーション必須)

数字・仕様の読み方
種別
共有シークレット
目的
認証(主に機械間)
トークン/形式
API キー文字列

判断チェックリスト

  • 自社の用途が「サービス間 API 呼び出し / 社内ツール・スクリプト」に近いか確認する。
  • 強みである「とにかく単純で導入が速い」が本当に評価軸になるか確認する。
  • 注意点の「漏れたら即なりすまし(ローテーション必須)」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

サービス間 API 呼び出し社内ツール・スクリプト簡易な利用制限

向いている用途

こんな用途に向く

サービス間 API 呼び出し社内ツール・スクリプト簡易な利用制限
公式サイト