# プッシュプロテクション

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

## プッシュ保護とは

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

## プッシュ保護のしくみ

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

* コマンド ラインからのプッシュ
* GitHub UI で行われたコミット
* リポジトリへのファイルのアップロード GitHub
* REST API への要求
* GitHub MCP サーバーとの対話 (パブリック リポジトリのみ)

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

## プッシュ保護の種類

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

* [リポジトリのプッシュ保護](#push-protection-for-repositories)
* [ユーザーのプッシュ保護](#push-protection-for-users)

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

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

* GitHub Secret Protectionを有効にする必要があります
* 既定では無効になっており、リポジトリ管理者、組織の所有者、セキュリティ マネージャー、またはエンタープライズ所有者が有効にすることができます。
* シークレットを含むプッシュが特定の保護されたリポジトリに到達するのをブロックします
* リポジトリ、組織、エンタープライズの \[ **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield" aria-label="shield" role="img"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> Security** ] タブで、プッシュ保護バイパスのアラートを生成します

> \[!TIP]
> プッシュ保護の有効化状態に関係なく、 GitHub Team および GitHub Enterprise の組織は無料のレポートを実行して、コードで漏洩したシークレットをスキャンできます。 このレポートには、プッシュ保護によって防止されたシークレット リークの数も表示されます。 「[GitHubを使用したシークレット セキュリティ](/ja/enterprise-server@3.20/code-security/securing-your-organization/understanding-your-organizations-exposure-to-leaked-secrets/about-secret-risk-assessment)」を参照してください。

### ユーザーのプッシュ保護

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

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

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

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

* リポジトリ、組織、エンタープライズの \[ **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-shield" aria-label="shield" role="img"><path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path></svg> Security** ] タブにアラートを作成します
* 監査ログにバイパス イベントを追加します。
* シークレットへのリンクと許可された理由を含む、リポジトリを監視している個人アカウント、組織、エンタープライズ所有者、セキュリティ マネージャー、リポジトリ管理者に電子メール アラートを送信します

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

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

どの共同作成者がプッシュ保護をバイパスできるか、シークレットを含むプッシュを許可するかをより詳細に制御する必要がある場合は、プッシュ保護 バイパス要求を監視および管理するレビュー担当者の指定されたグループです。

## プッシュ保護の利点

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

## カスタマイズ

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

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