Skip to main content

プッシュ保護について

プッシュ保護は、共同作成者がリポジトリにシークレットをプッシュするのをブロックし、共同作成者がブロックをバイパスするたびにアラートを生成します。 プッシュ保護は、リポジトリ、組織、ユーザー アカウント レベル でプッシュ保護を適用できます。

この機能を使用できるユーザーについて

プッシュ保護は、次のリポジトリの種類で使用できます。

  • GitHub.com 上のパブリックリポジトリ
  • GitHub Secret Protection が有効になっている GitHub Team または GitHub Enterprise Cloud 上の organization 所有リポジトリ
  • Enterprise Managed Users に属するユーザー名前空間リポジトリ

プッシュ保護について

プッシュ保護は、secret scanning 機能であり、シークレットやトークンなどの機密情報が最初にリポジトリにプッシュされないように設計されています。 コミットされた後にシークレットを検出する secret scanning とは異なり、プッシュ保護は、プッシュ プロセス中にコードでシークレットを事前にスキャンし、何かが検出された場合はプッシュをブロックします。

プッシュ保護は、リソースやサービスへの不正アクセスなど、公開されたシークレットに関連するリスクを回避するのに役立ちます。 この機能を使用すると、開発者はすぐにフィードバックを受け取り、セキュリティ上の問題になる前に潜在的な問題に対処できます。

プッシュ保護を有効にできます:

  • リポジトリ/組織レベルで、リポジトリ管理者または組織の所有者である場合。 リポジトリへの共同作成者がプッシュ保護をバイパスすると、リポジトリの [セキュリティ] タブにアラートが表示されます。
  • ユーザーとして、GitHub でのお使いのアカウントの場合。 この種のプッシュ保護は、"ユーザーのプッシュ保護" と呼ばれます。 GitHub でシークレットを_任意_のパブリック リポジトリ にプッシュするのを防げますが、アラートは生成されません。

ヒント

プッシュ保護が有効かどうかに関係なく、GitHub Team と GitHub Enterprise の organization は、無料のレポートを実行して、組織内のコードで漏洩したシークレットをスキャンできます。 また、このレポートでは、プッシュ保護によって防がれた可能性のある組織でのシークレット漏洩の数も示されます。 「GitHub でのシークレット セキュリティについて」を参照してください。

プッシュ保護によってサポートされるシークレットとサービス プロバイダーの詳細については、「サポートされているシークレット スキャン パターン」を参照してください。

プッシュ保護にはいくつかの制限があります。 詳しくは、「Troubleshooting secret scanning」をご覧ください。

プッシュ保護のしくみ

プッシュ保護は、次のもので検出されたシークレットをブロックします。

有効にした時点で、プッシュ試行中にプッシュ保護によって潜在的なシークレットが検出された場合、プッシュがブロックされ、ブロックの理由を説明する詳細なメッセージが表示されます。 問題のコードを確認し、機密情報を削除して、プッシュを再試行する必要があります。

既定では、リポジトリへの書き込みアクセス権を持つすべてのユーザーは、テーブルに記載されているバイパスの理由のいずれかを指定することで、プッシュ保護をバイパスすることを選択できます。 共同作成者がシークレットのプッシュ保護ブロックをバイパスする場合、GitHub では次のことが行われます。

  • リポジトリの [セキュリティ] タブでアラートを作成する。
  • 監査ログにバイパス イベントを追加します。
  • リポジトリを監視している organization または個人用アカウントの所有者、セキュリティ マネージャー、リポジトリ管理者に、シークレットへのリンクとそれが許可された理由を含むメール アラートを送信する。

次の表は、ユーザーがプッシュ保護ブロックをバイパスする方法ごとのアラートの動作を示しています。

バイパスの理由アラート動作
It's used in tests (テストで使用)GitHub は、"テストで使用" として解決されたクローズしたアラートを作成します
It's a false positive (偽陽性)GitHub は、"偽陽性" として解決されたクローズしたアラートを作成します
I'll fix it later (後で修正)GitHub は、オープンなアラートを作成します

どの共同作成者がプッシュ保護をバイパスできるか、シークレットなどプッシュを許可するかをより詳細に制御する必要がある場合は、プッシュ保護の委任されたバイパスを有効にすることができます。 委任されたバイパスを使用すると、リポジトリにプッシュする共同作成者からのプッシュ保護をバイパスするように要求を監視および管理するように、指定されたレビュー担当者のグループを構成できます。 詳しくは、「プッシュ保護のために委任されたバイパスについて」をご覧ください。

REST API を使用してプッシュ保護をバイパスすることもできます。 詳細については、「シークレット スキャン用の REST API エンドポイント」を参照してください。

プッシュ保護の利点について

  •           **予防セキュリティ**: プッシュ保護は、プッシュ時にコードでシークレットがあるかスキャンすることで、最前線の防御メカニズムとして機能します。 この予防的アプローチは、リポジトリに統合される前に潜在的な問題を捉えるのに役立ちます。
    
  •           **即時のフィードバック**: プッシュ試行中に潜在的なシークレットが検出された場合、開発者には即座にフィードバックが届きます。 この即時通知により、迅速な修復が可能になり、機密情報が公開される可能性を低減します。
    
  •           **データ リークのリスクを軽減**: 機密情報を含むコミットをブロックすることで、プッシュ保護によって、偶発的にデータが漏洩するリスクが大幅に軽減されます。 これにより、インフラストラクチャ、サービス、およびデータへの不正アクセスを防ぐことができます。
    
  •           **効率的なシークレット管理**: 公開されたシークレットをさかのぼって処理する代わりに、開発者はソースで問題に対処できます。 これにより、シークレット管理の効率が向上し、消費時間も短縮されます。
    
  •           **カスタム パターン検出機能:** 組織は、環境に固有のシークレットを検出するためのカスタム パターンを定義できます。 このカスタマイズにより、プッシュ保護は標準以外のシークレットでも効果的に識別してブロックできるようになります。
    
  •           **柔軟性のためにバイパスを削除しました:** 誤検知が発生した場合、または特定のパターンが必要な場合、委任されたバイパス機能を使った場合、指定されたユーザーが特定のプッシュを承認できます。 これにより、全体的なセキュリティを損なうことなく、柔軟性を実現できます。
    

GitHub のすべてのユーザーは、各自の設定内でプッシュ保護を有効にすることもできます。 ユーザー アカウントに対してプッシュ保護を有効にすると、GitHub のパブリック リポジトリにプッシュするたびに、そのリポジトリがプッシュ保護を有効にしていなくても、プッシュが保護されます。 詳しくは、「ユーザーのプッシュ保護」をご覧ください。

プッシュ保護のカスタマイズ

プッシュ保護を有効にすると、さらにカスタマイズできます。

プッシュ保護パターンを構成する

Enterprise レベルまたは組織レベルでプッシュ保護に含めるシークレット パターンをカスタマイズします。 「Enterprise 用の追加のシークレット スキャン設定の構成」と「組織のグローバル セキュリティ設定の構成」を参照してください。

カスタム パターンの定義

プッシュ保護を使用してシークレットを識別し、これらのシークレットを含むプッシュをブロックできるカスタム パターンを定義します。 詳しくは、「シークレット スキャンのカスタム パターンの定義」をご覧ください。

委任されたバイパスを構成する

プッシュ保護をバイパスし、他の共同作成者の承認プロセスを追加できる共同作成者を定義します。 詳しくは、「プッシュ保護のために委任されたバイパスについて」をご覧ください。

詳細については、次を参照してください。

  •         [AUTOTITLE](/code-security/secret-scanning/enabling-secret-scanning-features/enabling-push-protection-for-your-repository)
    
  •         [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-command-line)
    
  •         [AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-in-the-github-ui)
    
  •         [AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/defining-custom-patterns-for-secret-scanning)
    
  •         [AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/delegated-bypass-for-push-protection/about-delegated-bypass-for-push-protection)