Skip to main content

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

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

Secret scanning is available for organization-owned repositories in GitHub Enterprise Server if your enterprise has a license for GitHub Advanced Security. 詳細については、「GitHub Advanced Security について」を参照してください。

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

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

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

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

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

プッシュ保護としての 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 でブロックされたコミットを解決するには、ファイルからシークレットを削除するか、 [保護のバイパス] ドロップダウンを使用してシークレットを許可します。 プッシュ保護のバイパスについて詳しくは、「シークレット スキャンによるプッシュの保護」を参照してください。

シークレットが本物であることを確認したら、ファイルからシークレットを削除する必要があります。 シークレットを削除すると、ページ上部のバナーが変更され、変更をコミットできるようになったことが通知されます。