シークレット API キーを管理するためのベストプラクティス
シークレット API キーを管理し、キーの漏洩に対応する方法をご紹介します。
シークレット API キーは、ユーザー名やパスワードなどのアカウント認証情報の一形態です。不正行為者がシークレットキーを取得すると、それを使用してお客様のビジネスや Stripe エコシステム内の他の関係者に損害を与える可能性があります。
シークレット API キーを安全に保管する責任は Stripe ユーザーにあります。以下では、Stripe が提供するセキュリティー機能の使用を含め、安全に保管する方法のベストプラクティスをいくつかご紹介します。
侵害されたシークレット API キーからの保護
シークレットキーの侵害から保護するため、以下の措置を講じます。
- セキュアキー管理システム (KMS) を使用したシークレットキーの保管: Stripe ダッシュボードから本番のシークレットキーを作成すると、そのキーは一度しか表示されません。暗号化とアクセスコントロールで機密情報を扱う KMS に、すぐにキーをコピーしてください。ローカルファイルにキーのコピーを残さないようにしてください。
- 必要なユーザーのみにアクセス権を付与する: キーを作成、更新、または読み取るアクセス許可を持つユーザーについて、明確なポリシーを定義します。アクセスを、必要なユーザーのみに制限します。アクセスを定期的に監査して、キーに対する過剰な特権を回避します。
- シークレットキーを安全でない方法で共有しない: メール、チャットメッセージ、カスタマーサポートメッセージでキーを共有しないでください。Stripe がシークレット API キーの入力を求めることはありません。
- ソースコードリポジトリ (GitHub など) でのキー保管の禁止: 悪意のある者が API キーを狙って公開ソースリポジトリをスキャンする可能性があります。ソースリポジトリが非公開であっても、開発環境上でチームメンバーと共有されている可能性があります。
- アプリケーションにシークレットキーを埋め込まない: 不正利用者は、アプリケーション内の特定の文字列パターンを照合することで、シークレットキーを悪用できます。クライアントツール、SDK、モバイルアプリなどのアプリケーションにキーを埋め込むことは避けてください。
- API キーのローテーション機能の活用: キーのローテーションプロセスを定義し、実行することで、キーがどこで使用されているかを理解し、API キーが侵害された場合に備えることができます。キーのローテーションプロセスを実施することで、API キーが侵害された場合でもビジネスへの影響を最小限に抑えて対応できます。
- API リクエストログの監査による疑わしいアクティビティの監視。 API リクエストログ を定期的に監査または監視して、不正使用された API キーを積極的に特定することを推奨します。Sandbox キーが適切な場合に、開発者が本番キーを使用していないことを確認してください。詳しくは サンドボックスと本番環境の違い をご覧ください。
- 定期的なトレーニングとドキュメントの更新。 組織内でのシークレット API キーの扱い方に関する最新のドキュメントを整備します。また、定期的にトレーニングセッションを開催して、ベストプラクティスが守られていることを確認します。
制限付き API キーを使用して API アクセスをカスタマイズする
制限付き API キーを使用して、特定の API リソースへの制限付きアクセスを提供できます。制限付きキーを使用すると、特にサードパーティにアクセス権を付与する場合、必要なリソースへの最小限のアクセスのみを許可し、キーのリスクを制限できます。ユーザーに代わって API と対話するマイクロサービスを使用する場合は、それらのマイクロサービスが必要とする最小限のアクセスのみを許可する、制限付きキーを定義します。たとえば、不審請求の申し立て監視サービスを使用する場合は、不審請求の申し立てに関連するリソースへの読み取りアクセスのみを提供する、制限付きキーを作成します。このキーを使用すると、サービスは必要なデータを取得できますが、変更を加えたり、他のデータにアクセスしたりはできません。
制限付きキーは、マイクロサービスを使用または構築する際のリスクを軽減することを唯一の目的としているため、Stripe の API の多くの部分とやり取りできません。Stripe 実装の開発中は、アカウントのシークレットキーまたは公開可能な API キーの代わりに、制限付きキーを使用しないでください。
権限エラー
アクセスできないコールで制限付きの API キーを使用すると、Stripe は 権限エラーを発生させます。
API リクエストを送信できる IP アドレスを制限する
シークレットまたは制限付きキーのセキュリティを強化するには、API リクエストの送信に使用できる IP アドレスを制限します。サービスに安定したエグレス IP 範囲があり、それらのエグレス範囲が変更された際の許可リスト更新のための変更管理プロセスがある場合は、これをお勧めします。
キーを 1 つ以上の IP アドレスに制限する方法については、シークレットキーまたは制限付きキーをIP アドレスのリストまたは範囲に制限する方法を参照してください。
侵害されたシークレット API キーを処理する
シークレット API キーを誤って GitHub に公開してしまうなど、シークレット API キーの侵害を確認した場合は、直ちに Stripe ダッシュボード から キーをローテーション し、新しいキーで導入を更新します。API キーの侵害を確認せずに異常な動作を検出した場合は、根本的な原因を調査しながら API キーを積極的にローテーションすることを推奨します。
本番シークレット API キーの漏洩を Stripe が検知した場合、直ちに通知しキーのローテーションをリクエストします。侵害されたキーの不正使用により発生する可能性のある損害や金銭的損失を軽減するため、速やかに行動する必要があります。課されたリスクとアカウント上のアクティビティによっては、Stripe が代わってキーをローテーションすることを決定する場合があります。この場合、Stripe が取る措置について通知します。
Stripe はすべての侵害されたキーの検出を保証するものではありません。侵害されたキーを防止し、Stripe との導入がセキュアであることを確認するため、ベストプラクティスに従う必要があります。