Skip to main content

此版本的 GitHub Enterprise Server 已于以下日期停止服务 2024-07-09. 即使针对重大安全问题,也不会发布补丁。 为了获得更好的性能、更高的安全性和新功能,请升级到最新版本的 GitHub Enterprise。 如需升级帮助,请联系 GitHub Enterprise 支持

使用推送保护

推送保护通过阻止包含机密的推送,主动保护你免受存储库中的泄露机密的威胁。 若要推送包含机密的提交,必须指定绕过阻止的原因。

谁可以使用此功能?

如果你的企业拥有 GitHub Advanced Security 的许可证,则推送保护可用于 GitHub Advanced Security 中的组织拥有的存储库。

关于使用推送保护

推送保护通过阻止包含支持的机密的推送,防止你无意将机密提交到存储库。

可以从命令行或 Web UI 使用推送保护。

有关使用推送保护的详细信息,包括在必要时如何绕过阻止,请参阅本文中的“从命令行使用推送保护”和“从 Web UI 使用推送保护”。

从命令行使用推送保护

尝试将受支持的机密推送到受推送保护保护的存储库时,GitHub 将阻止推送。 可以从分支中删除机密,或访问提供的 URL 允许推送。

在命令行上,每次最多显示 5 个检测到的机密。 如果存储库中已检测到特定机密并且警报已存在,则 GitHub 不会阻止该机密。

如果确认机密是真实的,则需要将机密从分支和出现机密的所有提交中删除,然后再次推送。 有关修正被阻止机密的详细信息,请参阅“推送受推送保护阻止的分支”。

如果确认机密是真实的,并且你打算稍后修补它,你应该致力于尽快修补机密。 例如,你可以撤销该机密,并从存储库的提交历史记录中删除机密。 必须撤销已公开的真实机密,以避免未经授权的访问。 在撤销机密之前,可以考虑先轮换机密。 有关详细信息,请参阅“从存储库中删除敏感数据”。

注释

  • 如果 Git 配置支持推送到多个分支,而不仅仅是推送到当前分支,则由于附加和意外的引用被推送,你的推送可能被阻止。 有关详细信息,请参阅 Git 文档中的 push.default 选项
  • 如果在推送超时后进行 secret scanning,GitHub 仍将在推送后扫描你的提交有无机密。

在某些情况下,可能需要绕过对某机密的阻止。 有关如何绕过推送保护和推送阻止的机密的详细信息,请参阅“使用命令行时绕过推送保护”。

使用命令行时绕过推送保护

如果 GitHub 阻止了你认为可以安全推送的机密,则你能够通过指定允许推送机密的原因来绕过阻止。

允许推送机密时,将在“安全性”选项卡中创建警报。如果指定机密为误报或仅在测试中使用,则 GitHub 会关闭警报,且不会发送通知。 如果指定机密是真实的并且稍后将修复它,GitHub 会将安全警报保持打开状态,并向提交的作者以及存储库管理员发送通知。 有关详细信息,请参阅“管理来自机密扫描的警报”。

当参与者绕过机密的推送保护块时,GitHub 还会向选择接收电子邮件通知的组织所有者、安全管理员和存储库管理员发送电子邮件警报。

  1. 当推送被阻止时,请访问 GitHub 返回的 URL。

  2. 选择最能描述为何应该能够推送机密的选项。

    • 如果机密仅在测试中使用,并且不会构成任何威胁,请单击“它在测试中使用”。
    • 如果检测到的字符串不是机密,请单击“它是误报”。
    • 如果机密是真实的,但你打算稍后修复它,请单击“稍后修复”。
  3. 单击“允许我推送此机密”。

  4. 在三个小时内在命令行上重新尝试推送。 如果三小时内未推送,则需要重复此过程。

从 Web UI 使用推送保护

使用 Web UI 尝试将受支持的机密提交到受推送保护保护的存储库时,GitHub 将阻止提交。

你将看到一个对话框,其中包含有关机密位置的信息,以及允许推送机密的选项。 机密还会在文件中加下划线,以便可以轻松找到它。

对于被阻止的提交,可以使用 Web UI 从文件中删除机密。 删除机密后,即可提交更改。

GitHub 在 Web UI 中一次只显示一个检测到的秘密。 如果存储库中已检测到特定机密并且警报已存在,则 GitHub 不会阻止该机密。

组织所有者可以提供在阻止推送时显示的自定义链接。 此自定义链接可以包含特定于组织的资源和建议。 例如,自定义链接可以指向自述文件,其中包含有关组织的机密保管库、向哪些团队和个人呈报问或是组织对于处理机密和重写提交历史记录的已批准策略的信息。

你可以通过指定允许推送的原因来绕过阻止。 有关如何绕过推送保护和提交阻止的机密的详细信息,请参阅“使用 Web UI 时绕过推送保护”。

使用 Web UI 时绕过推送保护

如果确认机密是真实的,则需要将机密从分支和出现机密的所有提交中删除,然后再次推送。 有关修正被阻止机密的详细信息,请参阅“推送受推送保护阻止的分支”。

如果确认机密是真实的,并且你打算稍后修补它,你应该致力于尽快修补机密。 有关详细信息,请参阅“从存储库中删除敏感数据”。

如果 GitHub 阻止了你认为可以安全提交的机密,则你能够通过指定允许机密的原因来绕过阻止。

允许推送机密时,将在“安全性”选项卡中创建警报。如果指定机密为误报或仅在测试中使用,则 GitHub 会关闭警报,且不会发送通知。 如果指定机密是真实的并且稍后将修复它,GitHub 会将安全警报保持打开状态,并向提交的作者以及存储库管理员发送通知。 有关详细信息,请参阅“管理来自机密扫描的警报”。

当参与者绕过机密的推送保护块时,GitHub 还会向选择接收电子邮件通知的组织所有者、安全管理员和存储库管理员发送电子邮件警报。

  1. 在 GitHub 阻止提交时出现的对话框中,查看机密的名称和位置。

  2. 选择最能描述为何应该能够推送机密的选项。

    • 如果机密仅在测试中使用,并且不会构成任何威胁,请单击“它在测试中使用”。
    • 如果检测到的字符串不是机密,请单击“它是误报”。
    • 如果机密是真实的,但你打算稍后修复它,请单击“稍后修复”。
  3. 单击“允许机密”。

延伸阅读