APIキーとは何か、パスワードやOAuthトークンとどう違うのか、どこに保管するか、どう制限してローテーションするか、漏えいした瞬間に何をすべきかを解説します。
APIキーは、決済、地図、メールなどのサービスを呼び出すときに、どのアカウントからの呼び出しかを証明するため、プログラムがリクエストごとに送る長い秘密の文字列です。ほとんどのキーはパスワードと同じように扱いましょう。サーバーに保管し、サイトのコードには絶対に入れず、できることを制限し、漏れたら差し替えます。
APIキー、OAuthトークン、パスワードの比較
サイトやストアを運営していると、決済、地図、メール、フォームツール、AIエージェントなど、サービスをつなぐたびにAPIキーに出会います。ほとんどは秘密ですが、一部は公開を前提としたもので、この2つを取り違えることが高額な請求やデータ漏えいの原因になります。下のチェッカーにキーを貼り付けると、どの種類のキーに見えるかを確認できます。すべてブラウザー内で動作し、どこにも何も送信しません。
どちらも秘密情報ですが、パスワードは人がログインするためのもので、APIキーはソフトウェアがサービスを呼び出すためのものです。キーは長くランダムで、通常は特定の操作に限定されており、誰のログイン情報も変えずに差し替えられます。
そのキーの種類は公開しても安全だとプロバイダーが明言している場合に限ります。pk_ で始まるStripeの公開可能キーはフロントエンドのコード用ですが、シークレットキーと制限付きキーは違います。ブラウザー内にあるものは、すべての訪問者が読めます。
シークレット管理用のボールトか、ホスティングサービスの環境変数の設定に保管します。StripeもGoogleも、キーをソースコードに書いたり、コードリポジトリにコミットしたりしないよう案内しています。
すぐにプロバイダーのダッシュボードで無効化またはローテーションし、新しいキーをサーバーの設定に入れます。検出されたシークレットに関するGitHubのガイダンスでは、影響を受けた認証情報を直ちにローテーションするよう求めています。履歴を消すだけでは、有効なキーは安全になりません。
自分のサーバーが自分のアカウントでサービスとやり取りする場合はAPIキーを使います。アプリが他の人のアカウントでその人の代わりに動く必要がある場合はOAuthを使います。そうすれば、各ユーザーが自分でアクセスを許可し、取り消すことができます。
キーはサーバーの環境変数に置きます。ブラウザーは自分のエンドポイントを呼び出し、そのエンドポイントがキーを付けてプロバイダーを呼び出します。
値はすべてプレースホルダーです。.env を .gitignore に追加し、リポジトリに入らないようにしましょう。
小さなサーバーのルートです。シークレットはサーバー側で読み込まれ、ブラウザーに送られることはありません。
キー、またはその先頭の数文字を貼り付けてください。チェックはブラウザー内だけで行われますが、それでも本番の秘密キーではなくテスト用のキーかダミーの値を使うことをおすすめします。
確認するキー
Stripeの公開可能キー
Stripeのシークレットキー
Stripeの制限付きキー
Notionのトークン
Webhookの署名シークレット(whsec_ 接頭辞)
既知の接頭辞がありません。プロバイダーが別途説明していない限り、秘密として扱ってください。
プロバイダーによると、フロントエンドのコード用です。
秘密:サーバーに保管し、ウェブページには絶対に入れないでください。
テストモードまたはサンドボックスモードのキーです。
本番モードのキー:実際のお金や実際のデータを扱います。
長さ:{n} 文字
ランダムに生成された場合のおおよそのランダム性:{n} ビット
秘密としては短いようです。おおよそ {n} ビット以上を目安にするとよいでしょう。
確認するものを貼り付けてください。
無料で始める · クレジットカード不要