プッシュ保護は、サポートされているシークレットなどプッシュをブロックすることで、誤ってシークレットをリポジトリにコミットすることを防ぎます。
サポートされているシークレットをコマンド ラインからプッシュ保護によって保護されたリポジトリにプッシュしようとすると、GitHub によってプッシュがブロックされます。
次のいずれかを行う必要があります。
-
ブランチからシークレットを**削除**します。 詳細については、[「ブロックされたプッシュを解決する」](/code-security/how-tos/secure-your-secrets/work-with-leak-prevention/working-with-push-protection-from-the-command-line#resolving-a-blocked-push)を参照してください。 -
**表示された URL に従って**、プッシュを許可するために使用できるオプションを確認します。 詳細については、[「プッシュ保護をバイパスする」](/code-security/how-tos/secure-your-secrets/work-with-leak-prevention/working-with-push-protection-from-the-command-line#bypassing-push-protection)および[「バイパス権限を要求する」](/code-security/how-tos/secure-your-secrets/work-with-leak-prevention/working-with-push-protection-from-the-command-line#requesting-bypass-privileges)を参照してください。
検出されたシークレットは、コマンド ラインに一度に最大 5 つ表示されます。 リポジトリで特定のシークレットが既に検出されていて、アラートが既に存在する場合、GitHub はそのシークレットをブロックしません。
シークレットが本物で、後で修正する予定であることを確認する場合は、できるだけ早くシークレットの修復を目指す必要があります。 たとえば、シークレットを取り消し、リポジトリのコミット履歴からシークレットを削除できます。 不正アクセスを回避するために、公開されている実際のシークレットを取り消す必要があります。 取り消す前に、まずシークレットをローテーションすることを検討できます。 詳しくは、「リポジトリからの機微なデータの削除」をご覧ください。
メモ
- Git 構成で現在のブランチだけでなく、複数のブランチへのプッシュがサポートされている場合、追加の意図しない参照がプッシュされるため、プッシュがブロックされる可能性があります。 詳細については、Git ドキュメントの
push.defaultオプションを参照してください。 - プッシュ時にsecret scanningがタイムアウトした場合でも、GitHub ではプッシュ後もシークレットのコミットをスキャンします。