Skip to main content

Protecting pushes with secret scanning

You can use secret scanning to prevent supported secrets from being pushed into your enterprise, organization, or repository by enabling push protection.

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 について」を参照してください。

注: 保護プッシュとしてのSecret scanningは、現在ベータ版であり、変更される可能性があります。 ベータ版リリースへのアクセスを要求するには、アカウント管理チームにお問い合わせください

About push protection for secrets

Up to now, secret scanning for advanced security checks for secrets after a push and alerts users to exposed secrets. プッシュ保護を有効にすると、secret scanning は、信頼度の高いシークレット (誤検知率が低いシークレット) のプッシュもチェックします。 Secret scanning には、作成者がシークレットを確認して削除できるように、検出したシークレットが一覧表示されます。また、必要に応じて、それらのシークレットをプッシュできるようにします。

If a contributor bypasses a push protection block for a secret, GitHub:

  • creates an alert in the "Security" tab of the repository in the state described in the table below.
  • adds the bypass event to the audit log.
  • sends an email alert to organization owners, security managers, and repository administrators who are watching the repository, with a link to the secret and the reason why it was allowed.

次の表は、ユーザーがプッシュ保護ブロックをバイパスする方法ごとのアラートの動作を示しています。

バイパスの理由アラート動作
It's used in tests (テストで使用)GitHub は、"テストで使用" として解決されたクローズしたアラートを作成します
It's a false positive (偽陽性)GitHub は、"偽陽性" として解決されたクローズしたアラートを作成します
I'll fix it later (後で修正)GitHub は、オープンなアラートを作成します

For information on the secrets and service providers supported for push protection, see "Secret scanning patterns."

Enabling secret scanning as a push protection

For you to use secret scanning as a push protection, the enterprise, organization, or repository needs to have both GitHub Advanced Security and secret scanning enabled. For more information, see "Managing security and analysis settings for your enterprise," "Managing security and analysis settings for your organization," "Managing security and analysis settings for your repository," and "About GitHub Advanced Security."

Organization owners, security managers, and repository administrators can enable push protection for secret scanning via the UI and API. For more information, see "Repositories" and expand the "Properties of the security_and_analysis object" section in the REST API documentation.

Enabling secret scanning as a push protection for your enterprise

  1. GitHub.com の右上の自分のプロファイル写真をクリックし、 [自分の Enterprise] をクリックします。 GitHub Enterprise Cloud のプロファイル写真のドロップダウン メニューの [自分の Enterprise]

  2. Enterpriseのリストで、表示したいEnterpriseをクリックしてください。 自分の Enterprise のリストの Enterprise の名前

  3. エンタープライズ アカウントのサイドバーで、 [設定] をクリックします。 エンタープライズ アカウントのサイドバー内の [設定] タブ

  4. In the left sidebar, click Code security and analysis.

  5. Under "Secret scanning", under "Push protection", click Enable all.

    Screenshot showing how to enable push protection for secret scanning for an enterprise

  6. Optionally, click "Automatically enable for repositories added to secret scanning."

  7. Optionally, to include a custom link in the message that members will see when they attempt to push a secret, click Add a resource link in the CLI and web UI when a commit is blocked, then type a URL, and click Save link.

    Screenshot showing checkbox and text field for enabling a custom link

Enabling secret scanning as a push protection for an organization

  1. On GitHub.com, navigate to the main page of the organization.

  2. Organization 名の下で、 [設定] をクリックします。 Organization の設定ボタン

  3. In the "Security" section of the sidebar, click Code security and analysis.

  4. [コードのセキュリティと分析] の下で、「GitHub Advanced Security」を見つけてください。

  5. Under "Secret scanning", under "Push protection", click Enable all. Screenshot showing how to enable push protection for secret scanning for an organization

  6. Optionally, click "Automatically enable for repositories added to secret scanning."

  7. Optionally, to include a custom link in the message that members will see when they attempt to push a secret, select Add a resource link in the CLI and web UI when a commit is blocked, then type a URL, and click Save link.

    Screenshot showing checkbox and text field for enabling a custom link

Enabling secret scanning as a push protection for a repository

  1. On GitHub.com, navigate to the main page of the repository.

  2. リポジトリ名の下の [ 設定] をクリックします。 リポジトリの設定ボタン

  3. In the "Security" section of the sidebar, click Code security and analysis.

  4. [コードのセキュリティと分析] の下で、「GitHub Advanced Security」を見つけてください。

  5. Secret scanning の [Push protection](プッシュ保護) の下にある [有効にする] をクリックします。 リポジトリの secret scanning のプッシュ保護を有効にする方法を示すスクリーンショット

Using secret scanning as a push protection from the command line

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

Up to five detected secrets will be displayed at a time on the command line. If a particular secret has already been detected in the repository and an alert already exists, GitHub will not block that secret.

Organization admins can provide a custom link that will be displayed when a push is blocked. This custom link can contain organization-specific resources and advice, such as directions on using a recommended secrets vault or who to contact for questions relating to the blocked secret.

Screenshot showing that a push is blocked when a user attempts to push a secret to a repository

シークレットが本物であることを確認したら、再度プッシュする前に、ブランチから ("それが表示されるすべてのコミットから") シークレットを削除する必要があります。 For more information about remediating blocked secrets, see "Pushing a branch blocked by push protection."

If you confirm a secret is real and that you intend to fix it later, you should aim to remediate the secret as soon as possible. For example, you might revoke the secret and remove the secret from the repository's commit history. Real secrets that have been exposed must be revoked to avoid unauthorized access. You might consider first rotating the secret before revoking it. For more information, see "Removing sensitive data from a repository."

:

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

Allowing a blocked secret to be pushed

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.

シークレットのプッシュを許可すると、[セキュリティ] タブにアラートが作成されます。GitHub はアラートを閉じ、シークレットが擬陽性であるか、テストでのみ使用されることを指定した場合は通知を送信しません。 シークレットが実際のものであり、後で修正することを指定した場合、GitHub はセキュリティ アラートを開いたままにし、コミットの作成者とリポジトリ管理者に通知を送信します。 詳細については、「シークレット スキャンからのアラートの管理」を参照してください。

共同作成者がシークレットのプッシュ保護ブロックをバイパスすると、GitHub により、電子メール通知をオプトインした Organization の所有者、セキュリティ マネージャー、リポジトリ管理者にも電子メール アラートが送信されます。

  1. Visit the URL returned by GitHub when your push was blocked. Screenshot showing form with options for unblocking the push of a secret
  2. シークレットをプッシュできる理由を最もよく表しているオプションを選択します。
    • シークレットがテストでのみ使用され、脅威がない場合は、 [テストで使用されます] をクリックします。
    • 検出された文字列がシークレットでない場合は、 [誤検知です] をクリックします。
    • シークレットが本物で、後で修正する予定の場合は、 [後で修正します] をクリックします。
  3. Click Allow me to push this secret.
  4. Reattempt the push on the command line within three hours. If you have not pushed within three hours, you will need to repeat this process.

Using secret scanning as a push protection from the web UI

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

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

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

GitHub will only display one detected secret at a time in the web UI. If a particular secret has already been detected in the repository and an alert already exists, GitHub will not block that secret.

Organization admins can provide a custom link that will be displayed when a push is blocked. This custom link can contain resources and advice specific to your organization. For example, the custom link can point to a README file with information about the organization's secret vault, which teams and individuals to escalate questions to, or the organization's approved policy for working with secrets and rewriting commit history.

You can remove the secret from the file using the web UI. 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.

Screenshot showing commit in web ui allowed after secret fixed

Bypassing push protection for a secret

シークレットが本物であることを確認したら、再度プッシュする前に、ブランチから ("それが表示されるすべてのコミットから") シークレットを削除する必要があります。 For more information about remediating blocked secrets, see "Pushing a branch blocked by push protection."

If you confirm a secret is real and that you intend to fix it later, you should aim to remediate the secret as soon as possible. For more information, see "Removing sensitive data from a repository."

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.

シークレットのプッシュを許可すると、[セキュリティ] タブにアラートが作成されます。GitHub はアラートを閉じ、シークレットが擬陽性であるか、テストでのみ使用されることを指定した場合は通知を送信しません。 シークレットが実際のものであり、後で修正することを指定した場合、GitHub はセキュリティ アラートを開いたままにし、コミットの作成者とリポジトリ管理者に通知を送信します。 詳細については、「シークレット スキャンからのアラートの管理」を参照してください。

共同作成者がシークレットのプッシュ保護ブロックをバイパスすると、GitHub により、電子メール通知をオプトインした Organization の所有者、セキュリティ マネージャー、リポジトリ管理者にも電子メール アラートが送信されます。

If you confirm a secret is real and that you intend to fix it later, you should aim to remediate the secret as soon as possible.

  1. In the banner that appeared at the top of the page when GitHub blocked your commit, click Bypass protection.

  2. シークレットをプッシュできる理由を最もよく表しているオプションを選択します。

    • シークレットがテストでのみ使用され、脅威がない場合は、 [テストで使用されます] をクリックします。
    • 検出された文字列がシークレットでない場合は、 [誤検知です] をクリックします。
    • シークレットが本物で、後で修正する予定の場合は、 [後で修正します] をクリックします。

    Screenshot showing form with options for unblocking the push of a secret

  3. Click Allow secret.