Skip to main content

关于机密扫描

GitHub Enterprise Cloud 扫描仓库查找已知的密码类型,以防止欺诈性使用意外提交的密码。

谁可以使用此功能?

合作伙伴的机密扫描警报 在 GitHub.com 上的公共存储库和公共 npm 包中自动运行,以向服务提供商通知泄漏的机密情况。

用户拥有的公共存储库可免费使用用户的机密扫描警报。 使用 GitHub Enterprise Cloud 且拥有 GitHub Advanced Security 许可证的组织也可以在其专用存储库和内部存储库上启用 用户的机密扫描警报。 此外,用户的机密扫描警报可(在用户自有的存储库中为 beta 版本)用于具有 Enterprise Managed Users的 GitHub Enterprise Cloud。 有关详细信息,请参阅 “关于机密扫描”和“关于 GitHub 高级安全性”。

有关如何免费试用 GitHub Advanced Security 的信息,请参阅“安装 GitHub Advanced Security 试用版”。

About secret scanning

If your project communicates with an external service, you might use a token or private key for authentication. Tokens and private keys are examples of secrets that a service provider can issue. If you check a secret into a repository, anyone who has read access to the repository can use the secret to access the external service with your privileges. We recommend that you store secrets in a dedicated, secure location outside of the repository for your project.

Secret scanning will scan your entire Git history on all branches present in your GitHub repository for secrets, even if the repository is archived.

Additionally, secret scanning scans:

  • Descriptions and comments in issues
  • Titles, descriptions, and comments, in open and closed historical issues. A notification is sent to the relevant partner when a historical partner pattern is detected.
  • Titles, descriptions, and comments in pull requests
  • Titles, descriptions, and comments in GitHub Discussions

Note: The scanning of content in pull requests and GitHub Discussions is currently in beta and subject to change.

Secret scanning is available on GitHub.com in two forms:

  1. Secret scanning alerts for partners. Runs automatically on all public repositories and public npm packages. Service providers can partner with GitHub to provide their secret formats for scanning, hence the term "partners." To find out about our partner program, see "Secret scanning partner program." Any strings that match patterns that were provided by secret scanning partners are reported directly to the relevant partner. For more information, see the "About secret scanning alerts for partners" section below.

  2. Secret scanning alerts for users. These alerts are reported on GitHub.com and can be high confidence alerts or non-provider alerts (such as private keys). You can enable and configure additional scanning for repositories owned by organizations that use GitHub Enterprise Cloud for any public repositories (for free), and for private and internal repositories when you have a license for GitHub Advanced Security. Enterprise owners can manage the automatic enablement of GitHub Advanced Security for new repositories owned by Enterprise Managed Users with an enterprise level setting.

Any strings that match patterns provided by secret scanning partners, by other service providers, or defined by you or your organization, are reported as alerts in the Security tab of repositories. If a string in a public repository matches a partner pattern, it is also reported to the partner. For more information, see the "About secret scanning alerts for users" section below.

You can audit the actions taken in response to secret scanning alerts using GitHub tools. For more information, see "Auditing security alerts."

You can also enable secret scanning as a push protection for a repository or an organization. When you enable this feature, secret scanning prevents contributors from pushing code with a detected secret. To proceed, contributors must either remove the secret(s) from the push or, if needed, bypass the protection. Admins can also specify a custom link that is displayed to the contributor when a push is blocked; the link can contain resources specific to the organization to aid contributors. For more information, see "Push protection for repositories and organizations."

Additionally, push protection for users automatically protects you from accidentally committing secrets to public repositories, regardless of whether the repository has secret scanning enabled. Push protection for users is on by default, but you can disable the feature at any time through your personal account settings. For more information, see "Push protection for users."

Note: When you fork a repository with secret scanning or push protection enabled, these features are not enabled by default on the fork. You can enable secret scanning or push protection on the fork the same way you enable them on a standalone repository.

About secret scanning alerts for partners

When you make a repository public, or push changes to a public repository, GitHub Enterprise Cloud always scans the code for secrets that match partner patterns. Public packages on the npm registry are also scanned. If secret scanning detects a potential secret, we notify the service provider who issued the secret. The service provider validates the string and then decides whether they should revoke the secret, issue a new secret, or contact you directly. Their action will depend on the associated risks to you or them. For more information, see "Secret scanning patterns."

You cannot change the configuration of secret scanning for partner patterns on public repositories.

About secret scanning alerts for users

Secret scanning alerts for users is available for free on all public repositories, and for private and internal repositories that are owned by organizations using GitHub Enterprise Cloud with a license for GitHub Advanced Security. Additionally, secret scanning alerts for users are available and in beta on user-owned repositories for GitHub Enterprise Cloud with Enterprise Managed Users.

When you enable secret scanning for a repository, GitHub scans the code for patterns that match secrets used by many service providers. When the scan is completed, GitHub sends an email alert to the enterprise and organization owners, even if no secrets were found. For more information about the repository content that is scanned, see "About secret scanning" above.

When a supported secret is leaked, GitHub Enterprise Cloud generates a secret scanning alert. GitHub will also periodically run a full git history scan of existing content in GitHub Advanced Security repositories where secret scanning is enabled, and send alert notifications following the secret scanning alert notification settings. User alerts can be of two types: high confidence alerts, or non-provider alerts. For more information, see "About user alerts."

If you're a repository administrator, you can enable secret scanning alerts for users for any repository, including archived repositories. Organization owners can also enable secret scanning alerts for users for all repositories or for all new repositories within an organization. For more information, see "Managing security and analysis settings for your repository" and "Managing security and analysis settings for your organization."

Owners of an enterprise with Enterprise Managed Users can manage the automatic enablement of GitHub Advanced Security features such as secret scanning for new user-owned repositories with an enterprise level setting. For more information, see "Managing GitHub Advanced Security features for your enterprise."

You can also define custom secret scanning patterns for a repository, organization, or enterprise. For more information, see "Defining custom patterns for secret scanning."

GitHub stores detected secrets using symmetric encryption, both in transit and at rest.

Accessing secret scanning alerts

When you enable secret scanning for a repository or push commits to a repository with secret scanning enabled, GitHub scans the contents for secrets that match patterns defined by service providers and any custom patterns defined in your enterprise, organization, or repository.

When secret scanning detects a secret, GitHub generates an alert.

  • GitHub sends an email alert to the repository administrators and organization owners. You'll receive an alert if you are watching the repository, if you have enabled notifications either for security alerts or for all the activity on the repository, and if, in your notification settings, you have selected to receive email notifications for the repositories that you are watching.
  • If the person who introduced the secret isn't ignoring the repository, GitHub will also send them an email alert. The emails contains a link to the related secret scanning alert. The person who introduced the secret can then view the alert in the repository, and resolve the alert.
  • GitHub displays an alert in the Security tab of the repository.

For more information about viewing and resolving secret scanning alerts, see "Managing alerts from secret scanning."

For more information on how to configure notifications for secret scanning alerts, see "Configuring notifications for secret scanning alerts."

Repository administrators and organization owners can grant users and teams access to secret scanning alerts. For more information, see "Managing security and analysis settings for your repository."

You can use security overview to see an organization-level view of which repositories have enabled secret scanning and the alerts found. For more information, see "About security overview."

You can also use the REST API to monitor results from secret scanning across your repositories. For more information about API endpoints, see "REST API endpoints for secret scanning."

Further reading