Skip to main content
Skip to content

プッシュプロテクション

プッシュ保護を使用して、シークレットがリポジトリに到達するのを防ぎ、シークレットをセキュリティで保護します。

プッシュ保護とは

プッシュ保護は、シークレットやトークンなどのハードコーディングされた資格情報がリポジトリにプッシュされないように設計された secret scanning 機能です。 プッシュ保護はシークレットを含むプッシュをリポジトリに到達する前にブロックするため、事後に資格情報の漏洩が警告されることを防ぎます。

プッシュ保護のしくみ

プッシュ保護は、プッシュ試行中に潜在的なシークレットを検出すると、プッシュをブロックし、ブロックの理由を説明する詳細なメッセージを提供します。 問題のコードを確認し、機密情報を削除して、プッシュを再試行する必要があります。

プッシュ保護では、次の種類のシークレットをブロックできます。

パートナーパターン

GitHub は、そのシークレットでプッシュ保護が secret scanning のパートナープログラムの一部としてサポートされている場合に、プロバイダー固有の資格情報を含むプッシュをブロックします。 サポートされているプロバイダー パターンを参照してください。

ジェネリック パターン

GitHub は、秘密キーやデータベース接続文字列など、特定のプロバイダーに関連付けられていない構造化シークレットを含むプッシュをブロックします。 これを機能させるには、リポジトリのセキュリティ設定またはセキュリティ構成で汎用パターンとプッシュ保護のスキャンを有効にする必要があります。 関連するパターンは、組織または企業のプッシュ保護パターン構成で有効にする必要があります。 プッシュ保護に含めるパターンを指定するを参照してください。

カスタムパターン

GitHub は、カスタム パターンを含むプッシュをブロックします。これは、リポジトリ、組織、または企業に固有のシークレットを検出するために定義する正規表現です。 カスタム パターンを定義する場合は、それに対してプッシュ保護を有効にすることを選択できます。 「シークレット スキャンのカスタム パターンの定義」を参照してください。

AIによって検出された汎用的なシークレット

メモ

AI で検出されたシークレットのプッシュ保護はパブリック プレビューであり、変更される可能性があります。

GitHub は、周囲のコード コンテキストに基づいて AI により検出された、パスワードなどの非構造化シークレットを含むプッシュをブロックします。 この機能の課金方法については、 GitHub Advanced Security ライセンス請求 を参照してください。 この機能を有効にするには、 AI で検出されたシークレットのプッシュ保護の有効化 を参照してください。

対応するサーフェス

次の表は、各プッシュ サーフェイスでブロックされるシークレットの種類を示しています。

押下面パートナーパターンジェネリック パターンカスタムパターンAI によって見つかった一般的なシークレット
コマンド ラインからのプッシュ
GitHub UI で行われたコミット
リポジトリへのファイルのアップロード GitHub
REST API への要求
GitHub MCP サーバーとの対話 (パブリック リポジトリのみ)

プッシュ保護の種類

プッシュ保護には次の 2 種類があります。

リポジトリのプッシュ保護

リポジトリのプッシュ保護は、リポジトリ、組織、またはエンタープライズ レベルで有効にすることができます。 この形式のプッシュプロテクション:

  • GitHub Secret Protectionを有効にする必要があります
  • 既定では無効になっており、リポジトリ管理者、組織の所有者、セキュリティ マネージャー、またはエンタープライズ所有者が有効にすることができます。
  • シークレットを含むプッシュが特定の保護されたリポジトリに到達するのをブロックします
  • リポジトリ、組織、エンタープライズの [ Security and quality ] タブで、プッシュ保護バイパスのアラートを生成します

ヒント

プッシュ保護の有効化状態に関係なく、 GitHub Team および GitHub Enterprise の組織は無料のレポートを実行して、コードで漏洩したシークレットをスキャンできます。 このレポートには、プッシュ保護によって防止されたシークレット リークの数も表示されます。 「GitHubを使用したシークレット セキュリティ」を参照してください。

ユーザーのプッシュ保護

ユーザーのプッシュ保護は、 GitHub.comでのみ使用でき、 GitHub アカウントに固有です。 この形式のプッシュプロテクション:

  • 既定で有効になっています
  • シークレットをパブリック リポジトリにプッシュすることを停止します。 GitHub
  • プッシュ保護がリポジトリ レベルでも有効になっていない限り、プッシュ保護をバイパスするときにアラートを生成しません

プッシュプロテクションのバイパスとアラート

リポジトリのプッシュ保護の場合、既定では、リポジトリへの書き込みアクセス権を持つすべてのユーザーは、バイパス理由を指定することでプッシュ保護をバイパスできます。 共同作成者がプッシュ保護ブロックをバイパスする場合は、次の GitHub。

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

次の表は、ユーザーが指定できるバイパス理由ごとのアラートの動作を示しています。

バイパスの理由アラート動作
It's used in tests (テストで使用)
GitHub は、"テストで使用される" として解決された閉じたアラートを作成します。
これは偽陽性です
GitHubは、"誤検知"として解決済みの閉じたアラートを作成します。
I'll fix it later (後で修正)
GitHub 開いているアラートを作成する

どの共同作成者がプッシュ保護をバイパスできるか、シークレットを含むプッシュを許可するかをより詳細に制御する必要がある場合は、プッシュ保護 割り当てバイパスを構成できます。 委任されたバイパスを使用すると、アクターに次の権限を付与できます。

  • 特権をバイパスし、プッシュ保護自体をバイパスし、他の共同作成者からのバイパス要求を確認および承認できるようにします
  • プッシュ保護の除外。プッシュ保護をトリガーせずにコミットをプッシュできます

プッシュ保護の利点

  • 予防セキュリティ: プッシュ保護は、プッシュ時にハードコーディングされたシークレットのコードをスキャンすることで、最前線の防御メカニズムとして機能します。 この予防的アプローチは、リポジトリの履歴に侵入する前に資格情報の漏洩を防ぐのに役立ち、脅威への対処と修復が容易になります。
  • 即時のフィードバック: プッシュ試行中に潜在的なシークレットが検出された場合、開発者には即座にフィードバックが届きます。 この即時通知により、迅速な修復が可能になり、機密情報が公開される可能性を低減します。
  • 資格情報リークのリスクの軽減: ハードコーディングされた資格情報を含むコミットをブロックすることで、プッシュ保護により、誤って資格情報が漏洩し、シークレットが拡散するリスクが大幅に軽減されます。 これは、潜在的な侵害から保護し、コードベースの整合性を維持するのに役立ちます。
  • 効率的なシークレット管理: 公開されたシークレットをさかのぼって処理する代わりに、開発者はソースで問題に対処できます。 これにより、シークレット管理の効率が向上し、消費時間も短縮されます。
  • 柔軟性のためのバイパス機能: 誤検知が発生した場合、または特定のパターンが必要な場合は、ユーザーのプッシュ保護をバイパスできます。指定されたユーザーは委任バイパス機能を使用して、リポジトリのプッシュ保護をバイパスできます。 さらに、信頼されたアクターは、組織レベルおよびエンタープライズレベルでプッシュ保護全体から完全に免除できます。 これにより、全体的なセキュリティを損なうことなく、柔軟性が提供されます。
  • カスタム パターンを検出する機能 (組織のリポジトリの場合): 組織は、環境に固有のシークレットを検出するためのカスタム パターンを定義できます。 このカスタマイズにより、プッシュ保護によって、標準以外のシークレットも効果的に識別およびブロックできるようになります。
  • 既知のパターンを超えたカバレッジ: AI は、正規表現が確実に一致しない非構造化シークレット (パスワードなど) を検出します。

カスタマイズ

リポジトリのプッシュ保護を有効にしたら、次の方法でカスタマイズできます。

  • 一意のシークレット パターンを含むプッシュをブロックするカスタム パターンの定義
  • プッシュ保護をバイパスして他の共同作成者のバイパス要求を承認できる共同作成者を指定する、またはプッシュ保護を完全に除外する
  • 企業レベルまたは組織レベルでプッシュ保護に含めるシークレット パターンの構成