プッシュ保護について
プッシュ保護は、secret scanning 機能であり、シークレットやトークンなどの機密情報が最初にリポジトリにプッシュされないように設計されています。 コミットされた後にシークレットを検出する secret scanning とは異なり、プッシュ保護は、プッシュ プロセス中にコードでシークレットを事前にスキャンし、何かが検出された場合はプッシュをブロックします。
プッシュ保護は、リソースやサービスへの不正アクセスなど、公開されたシークレットに関連するリスクを回避するのに役立ちます。 この機能を使用すると、開発者はすぐにフィードバックを受け取り、セキュリティ上の問題になる前に潜在的な問題に対処できます。
プッシュ保護がサポートするシークレットとサービス プロバイダーの詳細については、「サポートされているシークレット スキャン パターン」を参照してください。
プッシュ保護のしくみ
有効にした時点で、プッシュ試行中にプッシュ保護によって潜在的なシークレットが検出された場合、プッシュがブロックされ、ブロックの理由を説明する詳細なメッセージが表示されます。 問題のコードを確認し、機密情報を削除して、プッシュを再試行する必要があります。
既定では、リポジトリへの書き込みアクセス権を持つすべてのユーザーは、テーブルに記載されているバイパスの理由のいずれかを指定することで、プッシュ保護をバイパスすることを選択できます。 共同作成者がシークレットのプッシュ保護ブロックをバイパスする場合、GitHub では次のことが行われます。
- リポジトリの [セキュリティ] タブでアラートを作成する。
- バイパス イベントを監査ログに追加する。
- リポジトリを監視している Organization または個人アカウントの所有者、セキュリティ マネージャー、リポジトリ管理者に、シークレットへのリンクとそれが許可された理由を含むメール アラートを送信する。
次の表は、ユーザーがプッシュ保護ブロックをバイパスする方法ごとのアラートの動作を示しています。
バイパスの理由 | アラート動作 |
---|---|
It's used in tests (テストで使用) | GitHub は、"テストで使用" として解決されたクローズしたアラートを作成します |
It's a false positive (偽陽性) | GitHub は、"偽陽性" として解決されたクローズしたアラートを作成します |
I'll fix it later (後で修正) | GitHub は、オープンなアラートを作成します |
プッシュ保護の利点について
-
予防セキュリティ: プッシュ保護は、プッシュ時にコードでシークレットがあるかスキャンすることで、最前線の防御メカニズムとして機能します。 この予防的アプローチは、リポジトリに統合される前に潜在的な問題を捉えるのに役立ちます。
-
即時のフィードバック: プッシュ試行中に潜在的なシークレットが検出された場合、開発者は即座にフィードバックを受け取ります。 この即時に通知することにより、迅速な修復が可能になり、機密情報が公開される可能性が低くなります。
-
データ リークのリスクを軽減: 機密情報を含むコミットをブロックすることで、プッシュ保護によって、偶発的にデータが漏洩するリスクが大幅に軽減されます。 これにより、インフラストラクチャ、サービス、およびデータへの不正アクセスを防ぐことができます。
-
効率的なシークレット管理: 公開されたシークレットをさかのぼって処理する代わりに、開発者はソースで問題に対処できます。 これにより、シークレット管理の効率が向上し、消費時間も短縮されます。
-
CI/CD パイプラインとの統合: プッシュ保護は継続的インテグレーション/継続的デプロイ (CI/CD) パイプラインに統合できるため、すべてのプッシュでシークレットがデプロイされる前にスキャンされます。 これにより、DevOps プラクティスにセキュリティレイヤーが追加されます。
-
カスタム パターンを検出できる: Organization は、環境に固有のシークレットを検出するためのカスタム パターンを定義できます。 このカスタマイズにより、プッシュ保護によって、標準以外のシークレットも効果的に識別およびブロックできるようになります。
プッシュ保護のカスタマイズ
プッシュ保護を有効にすると、さらにカスタマイズできます。
CI/CD パイプラインと統合する
プッシュ保護を継続的インテグレーション/継続的デプロイ (CI/CD) パイプラインと統合して、自動化されたプロセス中にスキャンが確実に実行されるようにします。 通常、これには、GitHub の API を呼び出す手順をパイプライン構成ファイルに追加するか、GitHub Actions を使用する必要があります。
カスタム パターンの定義
プッシュ保護を使用してシークレットを識別し、これらのシークレットを含むプッシュをブロックできるカスタム パターンを定義します。 詳しくは、「シークレット スキャンのカスタム パターンの定義」を参照してください。