# シークレット API キーを管理するためのベストプラクティス シークレット API キーを管理し、漏洩または侵害されたキーを処理する方法をご紹介します。 シークレット API キーは、ユーザー名とパスワードのようなアカウント認証情報の一種です。公開可能キーはウェブページやアプリに含めても安全ですが、シークレットキーはサーバー環境内に留める必要があります。権限のない第三者がシークレット API キーを取得すると、不正な支払いを行ったり、顧客データにアクセスしたり、連携を妨害したりする可能性があります。 ## シークレット API キーの保護 シークレット API キーは、開発の各段階で安全に処理して保管し、漏洩や侵害から保護する必要があります。 - **シークレット API キーをソースコードに含めないでください**: 不正行為者は公開リポジトリを継続的にスキャンして Stripe API キーを探します。非公開リポジトリでも開発環境を通じて漏洩する可能性があります。 - プラットフォームのシークレット管理ツール(シークレットボールトなど)または環境変数を使用して、組み込みコードにAPIキーを指定します。 - `sk_live_` および `rk_live_` を検索し、ソースコード、構成ファイル、CI/CD パイプラインで機密キーを定期的に監査します。機密キーが見つかった場合は、そのキーが[漏洩および侵害](https://docs.stripe.com/keys-best-practices.md#handling-compromised-keys)されていると想定します。 - バージョン管理システムでコミット前フックを使用して、これらのパターンに一致する文字列を含むコミットを拒否します。 - Stripe のドキュメントのコードスニペットには、説明のためだけにキーが含まれている場合があります。実際のキーをコードに含めないでください。 - **アプリケーションにシークレット API キーを決して埋め込まないでください**: 権限のない第三者がアプリケーションを分解して、埋め込みキーを検索できます。クライアントツール、SDK、モバイルアプリなどのクライアントサイドのユースケースでは、代わりに[公開可能キー](https://docs.stripe.com/keys.md#obtain-api-keys)を埋め込みます。 - **最小権限の原則に従う**: 従業員とシステムは、_職務遂行に必要な権限のみ_を持っている必要があります。 - シークレット API キーを作成、更新、または読み取る権限を持つチームメンバーに関する明確なポリシーを定義します。アクセスを必要なユーザーに制限し、キーの権限を定期的に監査します。 - 組織内でのシークレット API キーの扱い方に関する最新のドキュメントを整備します。また、定期的にトレーニングセッションを開催して、ベストプラクティスが守られていることを確認します。 - **シークレット API キーを慎重に取り扱う**: Stripe ダッシュボードでシークレット API キーを作成すると、1 回だけ表示されます。すぐにプラットフォームのシークレット管理ツールまたは環境変数にキーを保存します。他の場所には保存しないでください。 - シークレット API キーは、メール、チャットメッセージ、または顧客サポートメッセージではなく、プラットフォームのシークレット管理ツールを通じて共有してください。**Stripe がシークレット API キーを尋ねることはありません。** - 広範な権限を持つシークレット API キーではなく、制限付きの権限を持つ[制限付き API キー](https://docs.stripe.com/keys-best-practices.md#limit-access)を使用。 - **シークレット API キーを定期的にローテーション**: [Stripe API キー](https://docs.stripe.com/keys.md#rolling-keys)をローテーションするプロセスを定義し、練習します。定期的なローテーションにより、各キーが使用されている場所を把握し、チームが急な通知でキーを交換できることを確認します。キーが漏洩または侵害された場合にチームがビジネスへの影響を最小限に抑えて対応できるように、緊急時対応計画を書き留めます。 - **API リクエストログを監査して疑わしいアクティビティを監視**: API [リクエストログ](https://docs.stripe.com/development/dashboard/request-logs.md) を定期的に監査または監視して、不正使用された API キーを積極的に特定することを推奨します。*サンドボックス* (A sandbox is an isolated test environment that allows you to test Stripe functionality in your account without affecting your live integration. Use sandboxes to safely experiment with new features and changes) キーが適切な場合に開発者が本番キーを使用していないことを確認してください。詳しくは[サンドボックスと本番環境](https://docs.stripe.com/keys.md#test-live-modes)の違いをご覧ください。 ## 制限付き API キーを使用して API アクセスをカスタマイズする 広範なアクセス権を持つシークレット API キーを使用する代わりに、[制限付き API キー](https://docs.stripe.com/keys.md#create-restricted-api-secret-key)を作成して、ユーザーとシステムに特定の権限を割り当てることができます。たとえば、請求システムに請求書の管理のみを許可するなどです。 制限された API キーを使用すると、侵害の潜在的な影響を制限できます。たとえば、不審請求の申請を監視する第三者に Stripe API キーを提供する場合、Stripe アカウントの不審請求の申請関連リソースへの読み取り専用アクセスを許可し、その他をすべてブロックする制限された API キーを作成できます。第三者が侵害された場合、制限された API キーを盗んだ攻撃者は、その API コールのみに限定されます。 ## API リクエストを送信できる IP アドレスを制限する サービスが安定した IP アドレスから API リクエストを送信する場合は、シークレットまたは制限された API キーをそれらのアドレスに制限できます。たとえば、プラットフォームが専用の NAT ゲートウェイや、IP アドレスまたは範囲をリザーブする別の方法を提供している場合は、どこからでもキーを使用して API リクエストをブロックするように Stripe を設定できます。 キーを 1 つ以上の IP アドレスに制限する方法については、[シークレットキーまたは制付きキーを制限する](https://docs.stripe.com/keys.md#limit-api-secret-keys-ip-address)方法を参照してください。 ## 侵害されたシークレット API キーを処理する シークレット API キーが漏洩または侵害された場合は、誰の目にも触れていないと確信できない場合でも、直ちにローテーションしてください。あらゆる漏洩を潜在的な侵害として扱います。 - _公開_とは、公開リポジトリ、ログファイル、メールなど、本来表示されるべきでない場所にキーが表示されることを意味します。 - 「侵害」とは、キーの不正使用の反証資料が存在することを意味します。 ### キーの漏洩または侵害への対応 シークレット API キーが漏洩または侵害されたことを発見した場合は、次の手順に従います: 1. **影響を受けるキーを直ちにローテーションします。** [Stripe ダッシュボード](https://dashboard.stripe.com/apikeys)で[キーをローテーション](https://docs.stripe.com/keys.md#rolling-keys)し、インテグレーションで置き換えます。ダウンタイムを避けるために古いキーに遅延有効期限を設定する場合は、その期間をできるだけ短くしてください。 1. \**ローテーションするキーを決定。**少なくとも、公開された特定のキーをローテーションしてください。サーバーや認証情報ストアが侵害された場合など、漏洩の範囲が不明確な場合は、アカウントのすべてのシークレットおよび制限付き API キーをローテーションしてください。 1. **API リクエストログを確認。** [API リクエストログ](https://docs.stripe.com/development/dashboard/request-logs.md)で、影響を受けるキーを確認します。認識できないリクエスト、予期しない IP アドレス、または異常なパターン (処理量の急増や連携で通常使用しない Stripe API の呼び出しなど) を探します。 1. \**認識できないアクティビティーが見つかった場合は、Stripe サポートにお問い合わせください。**リクエストログに説明できないアクティビティーが示されている場合は、[Stripe サポート](https://support.stripe.com/)に連絡して、影響の調査と軽減について支援を求めてください。 ### Stripe のプロアクティブなキー保護 Stripe は、漏洩したシークレットまたは制限された付きの API キーを検出すると、お客様に通知し、キーをローテーションするようにリクエストします。場合によっては、Stripe は事前にキーを無効にし、Stripe が実行するアクションについてお客様に通知します。 Stripe は、漏洩または侵害されたすべてのキーの検出を保証するものではありません。これらのベストプラクティスに従うことで、キーの漏洩を防ぎ、Stripe の導入の安全性を維持できます。 ## See also - [API キー](https://docs.stripe.com/keys.md) - [侵害された API キーからの保護](https://support.stripe.com/questions/protecting-against-compromised-api-keys)