secret scanningのプッシュ保護について
secret scanning のプッシュ保護機能を使用すると、リポジトリに変更をプッシュする前にシークレットをスキャンすることで、セキュリティ リークを防ぐことができます。 組織またはリポジトリのプッシュ保護を有効にすると、secret scanning は、プッシュで信頼性の高いシークレット (誤検知率が低いと特定されたシークレット) もチェックします。 Secret scanning には、作成者がシークレットを確認して削除できるように、検出したシークレットが一覧表示されます。また、必要に応じて、それらのシークレットをプッシュできるようにします。プッシュ保護に対応しているシークレットとサービス プロバイダーの詳細については、「secret scanning パターン」を参照してください。
シークレットが本物であることを確認したら、再度プッシュする前に、ブランチから ("それが表示されるすべてのコミットから") シークレットを削除する必要があります。__
ヒント GitHub が、プッシュしても安全であると思われるシークレットをブロックする場合は、シークレットを許可し、許可する必要がある理由を指定できます。 シークレットのプッシュ保護をバイパスする方法の詳細については、コマンド ラインと Web UI についてそれぞれ「ブロックされたシークレットのプッシュを許可する」と「シークレットのプッシュ保護をバイパスする」を参照してください。
Organization の所有者は、プッシュがブロックされると GitHub Enterprise Server からのメッセージに含まれるカスタム リンクを指定できます。 このカスタム リンクには、Organization およびそのポリシーに固有のリソースとアドバイスを含めることができます。
コマンド ラインでのブロックされたプッシュの解決
プッシュ保護としての 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 からプッシュ保護をバイパスする方法の詳細については、「リポジトリと組織のプッシュ保護」を参照してください。
シークレットが本物であることを確認したら、ファイルからシークレットを削除する必要があります。 シークレットを削除すると、変更をコミットできるようになります。