secret scanningのプッシュ保護について
secret scanning のプッシュ保護機能を使用すると、リポジトリに変更をプッシュする前にシークレットをスキャンすることで、セキュリティ リークを防ぐことができます。 プッシュ保護を有効にすると、secret scanning は、信頼度の高いシークレット (誤検知率が低いシークレット) のプッシュもチェックします。 Secret scanning には、作成者がシークレットを確認して削除できるように、検出したシークレットが一覧表示されます。また、必要に応じて、それらのシークレットをプッシュできるようにします。プッシュ保護に対応しているシークレットとサービス プロバイダーの詳細については、「secret scanning パターン」を参照してください。
シークレットが本物であることを確認したら、再度プッシュする前に、ブランチから ("それが表示されるすべてのコミットから") シークレットを削除する必要があります。__
ヒント GitHub が、プッシュしても安全であると思われるシークレットをブロックする場合は、シークレットを許可し、許可する必要がある理由を指定できます。 シークレットのプッシュ保護のバイパスに関する詳細情報については、「シークレット スキャンによるプッシュの保護」と「シークレット スキャンによるプッシュの保護」を参照して、それぞれコマンド ラインと Web UI について確認してください。
コマンド ラインでのブロックされたプッシュの解決
プッシュ保護としての secret scanning が有効になっているリポジトリまたは組織に、サポートされているシークレットをプッシュしようとすると、GitHub によってプッシュがブロックされます。 ブランチからシークレットを削除するか、指定された URL に従ってプッシュを許可できます。
注:
- Git 構成で現在のブランチだけでなく、複数のブランチへのプッシュがサポートされている場合、追加の意図しない参照がプッシュされるため、プッシュがブロックされる可能性があります。 詳細については、Git ドキュメントの
push.default
オプションを参照してください。 - プッシュ時にsecret scanningがタイムアウトした場合でも、GitHub ではプッシュ後もシークレットのコミットをスキャンします。
ブロックされたシークレットがブランチ上で最新のコミットによって導入された場合は、次のガイダンスに従うことができます。
- コードからシークレットを削除します。
git commit --amend
を使用して変更をコミットします。git push
を使用して変更をプッシュします。
シークレットが Git 履歴の以前のコミットに表示される場合は、シークレットを削除することもできます。
git log
を使用して、プッシュ エラーで表面化したどのコミットが履歴で最初に発生したかを判断します。git rebase -i <commit-id>~1
を使用して、インタラクティブなリベースを開始します。は、手順 1 のコミットの ID です。 - エディターに表示されるテキストの最初の行の
pick
をedit
に変更して、編集するコミットを特定します。 - コードからシークレットを削除します。
git commit --amend
を使用して、変更をコミットします。git rebase --continue
を実行して、リベースを完了します。
Web UI でのブロックされたコミットの解決
Web UI を使用して、プッシュ保護が有効になっているシークレット スキャンを使用して、サポートされているシークレットをリポジトリまたは organization にコミットすると、GitHub によってプッシュがブロックされます。
ページ上部にシークレットの場所の情報を示すバナーが表示され、シークレットもファイルで下線が引かれるので、簡単に見つけることができます。
Web UI でブロックされたコミットを解決するには、ファイルからシークレットを削除するか、 [保護のバイパス] ドロップダウンを使用してシークレットを許可します。 Web UI からプッシュ保護をバイパスする方法の詳細については、「シークレット スキャンによるプッシュの保護」を参照してください。
シークレットが本物であることを確認したら、ファイルからシークレットを削除する必要があります。 シークレットを削除すると、ページ上部のバナーが変更され、変更をコミットできるようになったことが通知されます。