跳至主要内容

关于推送保护

推送保护阻止贡献者将密钥推送到存储库,并在贡献者绕过阻止时生成警报。推送保护可以在存储库、组织和用户帐户级别应用。

谁可以使用此功能?

以下存储库类型可用于存储库和组织的推送保护

  • 免费的公共存储库
  • 在使用启用了GitHub 高级安全功能的 GitHub Enterprise Cloud 的组织中的私有和内部存储库

关于推送保护

推送保护是旨在防止敏感信息(如密钥或令牌)首先推送到您的存储库的密钥扫描功能。与在提交后检测密钥的密钥扫描不同,推送保护在推送过程中主动扫描您的代码以查找密钥,并在检测到任何密钥时阻止推送。

推送保护可帮助您避免与公开的密钥相关的风险,例如对资源或服务的未经授权的访问。借助此功能,开发人员可以获得即时反馈,并在安全问题出现之前解决潜在问题。

您可以启用推送保护

  • 在存储库/组织级别,如果您是存储库管理员或组织所有者。当存储库的贡献者绕过推送保护时,您将在存储库的“**安全**”选项卡中看到警报。
  • 对于您在 GitHub 上的帐户,作为用户。此类型的推送保护称为“用户推送保护”。它可以保护您免于将密钥推送到 GitHub 上的 *任何* 公共存储库,但不会生成任何警报。

有关推送保护支持的密钥和服务提供商的信息,请参阅“支持的密钥扫描模式”。

推送保护的工作原理

推送保护的工作方式

启用后,如果推送保护在推送尝试期间检测到潜在的密钥,它将阻止推送并提供详细的消息来解释阻止的原因。您需要检查有问题的代码,删除任何敏感信息,然后重新尝试推送。

默认情况下,任何对存储库具有写入权限的人员都可以选择通过指定表格中概述的绕过原因之一来绕过推送保护。如果贡献者绕过密钥的推送保护阻止,GitHub 将

  • 在存储库的“**安全**”选项卡中创建警报。
  • 将绕过事件添加到审计日志。
  • 向正在监视存储库的组织或个人帐户所有者、安全管理员和存储库管理员发送电子邮件警报,其中包含密钥的链接以及允许它的原因。

此表显示了用户可以绕过推送保护阻止的每种方式的警报行为。

绕过原因警报行为
它用于测试GitHub 创建一个已关闭的警报,并解析为“用于测试”
这是一个误报GitHub 创建一个已关闭的警报,并解析为“误报”
我稍后会修复它GitHub 创建一个打开的警报

您还可以使用 REST API 绕过推送保护。有关更多信息,请参阅“密钥扫描的 REST API 端点”。

关于推送保护的优势

  • 预防性安全:推送保护通过在推送时扫描代码中的密钥,充当第一道防线机制。这种预防性方法有助于在潜在问题合并到您的存储库之前捕获它们。

  • 即时反馈:如果在推送尝试期间检测到潜在密钥,开发人员会收到即时反馈。此即时通知允许快速修复,从而降低敏感信息泄露的可能性。

  • 降低数据泄露风险:通过阻止包含敏感信息的提交,推送保护显著降低了意外数据泄露的风险。这有助于防止未经授权访问您的基础设施、服务和数据。

  • 高效的密钥管理:开发人员可以从源头解决问题,而不是事后处理泄露的密钥。这使得密钥管理更加高效且省时。

  • 与 CI/CD 管道的集成:推送保护可以集成到您的持续集成/持续部署 (CI/CD) 管道中,确保在部署之前扫描每次推送的密钥。这为您的 DevOps 实践增加了额外的安全层。

每个 GitHub 用户也可以在各自的设置中启用推送保护。为您的用户帐户启用推送保护意味着,无论何时您向 GitHub 上的公共存储库推送代码,您的推送都将受到保护,而无需依赖该存储库启用推送保护。有关更多信息,请参阅“用户推送保护”。

自定义推送保护

启用推送保护后,您可以进一步自定义它。

与 CI/CD 管道集成

将推送保护与您的持续集成/持续部署 (CI/CD) 管道集成,以确保它在自动化过程中运行扫描。这通常涉及在您的管道配置文件中添加步骤以调用 GitHub 的 API 或使用 GitHub Actions。

进一步阅读