Skip to main content

プッシュ保護によってブロックされたブランチをプッシュする

secret scanningのプッシュ保護機能を使用すると、リポジトリでのシークレットの漏洩を予防することができます。 ブロックされたプッシュを解決でき、検出されたシークレットが削除されたら、コマンド ラインまたは Web UI から作業ブランチに変更をプッシュできます。

パートナーに対するシークレット スキャン アラート はパブリック リポジトリとパブリック npm パッケージで自動的に実行され、GitHub.com で漏洩したシークレットについてサービス プロバイダーに通知します。

ユーザーに対するシークレット スキャン アラート は、すべてのパブリック リポジトリで無料で利用できます。 GitHub Enterprise Cloud を使い、GitHub Advanced Security のライセンスを持っている組織は、プライベート リポジトリと内部リポジトリに対して ユーザーに対するシークレット スキャン アラート を有効にすることもできます。 詳細については、「シークレット スキャンについて」と「GitHub Advanced Security について」を参照してください。

secret scanningのプッシュ保護について

secret scanning のプッシュ保護機能を使用すると、リポジトリに変更をプッシュする前にシークレットをスキャンすることで、セキュリティ リークを防ぐことができます。 組織またはリポジトリのプッシュ保護を有効にすると、secret scanning は、プッシュで信頼性の高いシークレット (誤検知率が低いと特定されたシークレット) もチェックします。 Secret scanning には、作成者がシークレットを確認して削除できるように、検出したシークレットが一覧表示されます。また、必要に応じて、それらのシークレットをプッシュできるようにします。プッシュ保護に対応しているシークレットとサービス プロバイダーの詳細については、「secret scanning パターン」を参照してください。

シークレットが本物であることを確認したら、再度プッシュする前に、ブランチから ("それが表示されるすべてのコミットから") シークレットを削除する必要があります。__

ヒント GitHub が、プッシュしても安全であると思われるシークレットをブロックする場合は、シークレットを許可し、許可する必要がある理由を指定できます。 シークレットのプッシュ保護をバイパスする方法の詳細については、コマンド ラインと Web UI についてそれぞれ「ブロックされたシークレットのプッシュを許可する」と「シークレットのプッシュ保護をバイパスする」を参照してください。

Organization の所有者は、プッシュがブロックされると GitHub からのメッセージに含まれるカスタム リンクを指定できます。 このカスタム リンクには、Organization およびそのポリシーに固有のリソースとアドバイスを含めることができます。

コマンド ラインでのブロックされたプッシュの解決

プッシュ保護としての secret scanning が有効になっているリポジトリまたは組織に、サポートされているシークレットをプッシュしようとすると、GitHub によってプッシュがブロックされます。 ブランチからシークレットを削除するか、指定された URL に従ってプッシュを許可できます。

:

  • Git 構成で現在のブランチだけでなく、複数のブランチへのプッシュがサポートされている場合、追加の意図しない参照がプッシュされるため、プッシュがブロックされる可能性があります。 詳細については、Git ドキュメントの push.default オプションを参照してください。
  • プッシュ時にsecret scanningがタイムアウトした場合でも、GitHub ではプッシュ後もシークレットのコミットをスキャンします。

ブロックされたシークレットがブランチ上で最新のコミットによって導入された場合は、次のガイダンスに従うことができます。

  1. コードからシークレットを削除します。
  2. git commit --amend を使用して変更をコミットします。
  3. git push を使用して変更をプッシュします。

シークレットが Git 履歴の以前のコミットに表示される場合は、シークレットを削除することもできます。

  1. git log を使用して、プッシュ エラーで表面化したどのコミットが履歴で最初に発生したかを判断します。
  2. git rebase -i <commit-id>~1 を使用して、インタラクティブなリベースを開始します。 は、手順 1 のコミットの ID です。
  3. エディターに表示されるテキストの最初の行の pickedit に変更して、編集するコミットを特定します。
  4. コードからシークレットを削除します。
  5. git commit --amend を使用して、変更をコミットします。
  6. git rebase --continue を実行して、リベースを完了します。

Web UI でのブロックされたコミットの解決

Web UI を使用して、プッシュ保護が有効になっているシークレット スキャンを使用して、サポートされているシークレットをリポジトリまたは organization にコミットすると、GitHub によってプッシュがブロックされます。

シークレットの場所に関する情報と、シークレットをプッシュできるオプションを含むダイアログ ボックスが表示されます。 簡単に見つけられるように、ファイルではシークレットに下線も引かれています。

Web UI でブロックされたコミットを解決するには、ファイルからシークレットを削除するか、ダイアログ ボックスに表示されるオプションを使ってシークレットを許可する必要があります。 Web UI からプッシュ保護をバイパスする方法の詳細については、「リポジトリと組織のプッシュ保護」を参照してください。

シークレットが本物であることを確認したら、ファイルからシークレットを削除する必要があります。 シークレットを削除すると、変更をコミットできるようになります。