Skip to main content

Pushing a branch blocked by push protection

The push protection feature of secret scanning proactively protects you against leaked secrets in your repositories. You can resolve blocked pushes and, once the detected secret is removed, you can push changes to your working branch from the command line or the web UI.

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

About push protection for secret scanning

The push protection feature of secret scanning helps to prevent security leaks by scanning for secrets before you push changes to your repository. プッシュ保護を有効にすると、secret scanning は、信頼度の高いシークレット (誤検知率が低いシークレット) のプッシュもチェックします。 Secret scanning には、作成者がシークレットを確認して削除できるように、検出したシークレットが一覧表示されます。また、必要に応じて、それらのシークレットをプッシュできるようにします。 For information on the secrets and service providers supported for push protection, see "Secret scanning patterns."

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

Tip If GitHub blocks a secret that you believe is safe to push, you can allow the secret and specify the reason why it should be allowed. For more information about bypassing push protection for a secret, see "Allowing a blocked secret to be pushed" and "Bypassing push protection for a secret" for the command line and the web UI, respectively.

Organization admins can provide a custom link that will be included in the message from GitHub Enterprise Cloud when your push is blocked. This custom link can contain resources and advice specific to your organization and its policies.

Resolving a blocked push on the command line

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

:

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

If the blocked secret was introduced by the latest commit on your branch, you can follow the guidance below.

  1. Remove the secret from your code.
  2. Commit the changes, by using git commit --amend.
  3. Push your changes with git push.

You can also remove the secret if the secret appears in an earlier commit in the Git history.

  1. Use git log to determine which commit surfaced in the push error came first in history.
  2. Start an interactive rebase with git rebase -i <commit-id>~1. is the id of the commit from step 1.
  3. Identify your commit to edit by changing pick to edit on the first line of the text that appears in the editor.
  4. Remove the secret from your code.
  5. Commit the change with git commit --amend.
  6. Run git rebase --continue to finish the rebase.

Resolving a blocked commit in the web UI

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

ページ上部にシークレットの場所の情報を示すバナーが表示され、シークレットもファイルで下線が引かれるので、簡単に見つけることができます。

シークレット スキャンのプッシュ保護のためにブロックされた Web UI でのコミットを示すスクリーンショット

To resolve a blocked commit in the web UI, you need to remove the secret from the file, or use the Bypass protection dropdown to allow the secret. For more information about bypassing push protection from the web UI, see "Protecting pushes with secret scanning."

If you confirm a secret is real, you need to remove the secret from the file. Once you remove the secret, the banner at the top of the page will change and tell you that you can now commit your changes.