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