APIキーとは?シンプルなサービス資格情報
APIキーは、要求とともに渡され、サービスに対して呼び出し元を識別し認証する文字列であり、通常、組み込みのスコープ付けはほとんどまたは全くありません。
APIキーは、マシン資格情報の最もシンプルな形態です。サービスが誰の呼び出しかを知るために、各要求とともに送信する文字列です。メールプロバイダーからanalyticsまで、多くのサードパーティサービスがAPIキーを渡します。使いやすいものの、大雑把な道具であり、しばしば有効期限なしで広範なアクセスを付与するため、パイプラインではリスクを伴います。
APIキーの仕組み
サービスはあなたのアカウントに紐づいたキーを生成します。あなたはそれを要求に含め、しばしばヘッダーやクエリパラメータとして渡します。サービスはそれを照合してアクセスを付与します。通常、ユーザーの操作もトークン交換もありません。キーそのものが資格情報です。
APIキー対トークン
- APIキーは通常、長命で静的です。
- アクセストークンは通常、短命でスコープ付きです。
- OAuthおよびOIDCのフローは、素のキーには欠けている同意と有効期限を追加します。
APIキーのリスク
キーはしばしば長命で広範にスコープ付けされるため、漏洩したキーは誰かが気づく前に長期間悪用されうります。クエリ文字列内のキーは、サーバーログやブラウザ履歴に残る可能性があります。それらはパスワードと同じ配慮を必要とします。
CI/CDにおけるAPIキー
パイプラインは、APIキーで認証するサードパーティサービス (deploy先、監視、packageレジストリ) を呼び出します。各キーを暗号化されたsecretとして保存し、決してコードに埋め込まず、忘れられた漏洩が永遠に生き残らないようスケジュールに沿ってローテーションしてください。
露出を減らす
サービスが提供する最も制限されたキーを使い、サポートされている場合は有効期限を設定し、定期的にローテーションしましょう。単一の万能なキーよりも、スコープ付きで短命なトークンやOIDCをサポートするサービスを優先してください。キーがマスクされていることを確認するためにログを監視しましょう。
APIキーとrunner
APIキーはjobの間、runnerを通じて流れます。エフェメラルで隔離されたrunner (Latchkeyのマネージドrunnerなど) では、jobが終わると環境とともにキーは消えるため、後続のjobに漏れることはありません。
重要なポイント
- APIキーは、サービスに対して呼び出し元を認証する静的な文字列です。
- キーはしばしば長命で広範にスコープ付けされるため、漏洩は検出されないまま続く可能性があります。
- キーは暗号化されたsecretとして保存し、ローテーションし、可能であればスコープ付きトークンを優先しましょう。