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 の管理者は、push がブロックされると GitHub Enterprise Cloud からのメッセージに含まれるカスタム リンクを指定できます。 このカスタム リンクには、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 からプッシュ保護をバイパスする方法の詳細については、「シークレット スキャンによるプッシュの保護」を参照してください。

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