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