Skip to main content
We publish frequent updates to our documentation, and translation of this page may still be in progress. For the most current information, please visit the English documentation.

使用机密扫描保护推送

可以使用 secret scanning 通过启用推送保护,防止将支持的机密推送到 企业、 组织、 或存储库中。

Secret scanning alerts for partners 自动在所有公共存储库上运行。 如果你拥有 GitHub Advanced Security 的许可证,则可以为组织拥有的任何存储库启用和配置 secret scanning alerts for users。

如果你的企业拥有 GitHub Advanced Security 的许可证,则 有关详细信息,请参阅“关于 secret scanning alerts for users”和“关于 GitHub Advanced Security”。

注意: Secret scanning 作为保护推送,目前为 beta 版本,可能会有变动。

关于机密的推送保护

截至目前,secret scanning 在推送后检查机密,并向用户提醒公开的机密。 启用推送保护时,secret scanning 还会检查推送中是否存在高置信度机密(经识别误报率低的机密)。 Secret scanning 列出了它检测到的所有机密,便于作者进行查看和删除,或者根据需要允许推送这些机密。 Secret scanning 还可以检查推送的自定义模式。 有关详细信息,请参阅“为机密扫描定义自定义模式”。

如果参与者绕过机密的推送保护块,GitHub:

  • 在存储库的“安全性”选项卡中创建一个警报,状态如下表所述。
  • 将绕过事件添加到审核日志。
  • 向监管存储库的组织所有者、安全管理员和存储库管理员发送一封电子邮件警报,其中包含指向机密的链接以及允许使用该机密的原因。

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

绕过原因警报行为
它在测试中使用GitHub 创建已关闭的警报,该警报解析为“在测试中使用”
这是假正GitHub 创建已关闭的警报,该警报解析为“假正”
我稍后会修复它GitHub 创建未结警报

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

启用 secret scanning 作为推送保护

若要使用 secret scanning 作为推送保护,企业、 组织、 或存储库需要同时启用 GitHub Advanced Security 和 secret scanning。 有关详细信息,请参阅 “管理企业的安全性和分析设置”“管理组织的安全性和分析设置”“管理存储库的安全性和分析设置”和“关于 GitHub Advanced Security”。

组织所有者、安全管理员和存储库管理员可以通过 UI 和 API 为 secret scanning 启用推送保护。 有关详细信息,请参阅“存储库”,并展开 REST API 文档中的“security_and_analysis 对象的属性”部分。

企业管理员还可以通过 API 启用或禁用 secret scanning 作为企业的推送保护。 有关详细信息,请参阅 REST API 文档中的“启用或禁用企业的安全功能”。

启用 secret scanning 作为企业的推送保护

  1. 在 GitHub.com 的右上角,单击你的个人资料照片,然后单击“你的企业”。 GitHub Enterprise Cloud 上个人资料照片下拉菜单中的“你的企业”

  2. 在企业列表中,单击您想要查看的企业。 企业列表中的企业名称

  3. 在企业帐户侧边栏中,单击 “设置”。 企业帐户侧边栏中的“设置”选项卡

  4. 在左侧边栏中,单击“代码安全性和分析”。

  5. 在“Secret scanning”下的“推送保护”下,单击“全部启用”。

    屏幕截图演示如何为企业的 secret scanning 启用推送保护

  6. (可选)单击“自动启用添加到 secret scanning 的存储库”。

  7. (可选)若要在消息中包含成员在尝试推送机密时会看到的自定义链接,请单击“阻止提交时在 CLI 和 Web UI 中添加资源链接”,然后键入 URL,并单击“保存链接” 。

    显示用于启用自定义链接的复选框和文本字段的屏幕截图

启用 secret scanning 作为组织的推送保护

  1. 在 GitHub.com 上,导航到组织的主页。 1. 在组织名称下,单击“设置”。 组织设置按钮

  2. 在边栏的“安全性”部分中,单击“ 代码安全性和分析”。

  3. 在“代码安全性和分析”下,查找“GitHub Advanced Security”。 1. 在“Secret scanning”下的“推送保护”下,单击“全部启用”。 屏幕截图演示如何为组织的 secret scanning 启用推送保护

  4. (可选)单击“自动启用添加到 secret scanning 的存储库”。

  5. (可选)若要在消息中包含成员在尝试推送机密时会看到的自定义链接,请选择“阻止提交时在 CLI 和 Web UI 中添加资源链接”,然后键入 URL,并单击“保存链接” 。

    显示用于启用自定义链接的复选框和文本字段的屏幕截图

启用 secret scanning 作为存储库的推送保护

  1. 在 GitHub.com 上,导航到存储库的主页。 1. 在存储库名称下,单击 “设置”。 “存储库设置”按钮
  2. 在边栏的“安全性”部分中,单击“ 代码安全性和分析”。
  3. 在“代码安全性和分析”下,查找“GitHub Advanced Security”。 1. 在“Secret scanning”下的“推送保护”下,单击“启用”。 演示如何为存储库的 secret scanning 启用推送保护的屏幕截图

使用机密扫描作为命令行的推送保护

尝试在 secret scanning 作为推送保护启用的情况下将受支持的机密推送到存储库或组织时,GitHub 将组织推送。 可以从分支中删除该机密,或遵循提供的 URL 来允许推送。

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

组织管理员可以提供在阻止推送时显示的自定义链接。 此自定义链接可以包含特定于组织的资源和建议,例如有关使用建议机密保管库或者要联系谁来了解与所阻止的机密相关的问题的指示。

显示当用户尝试将机密推送到存储库时推送被阻止的屏幕截图

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

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

注释

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

允许推送被阻止的机密

如果 GitHub 阻止了一个你认为可以安全推送的机密,则可以允许该机密并指定允许的原因。

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

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

  1. 当推送被阻止时,请访问 GitHub 返回的 URL。 显示窗体的屏幕截图,其中包含取消阻止机密推送的选项 2. 选择最能描述为何应该能够推送机密的选项。
    • 如果机密仅在测试中使用,并且不会构成任何威胁,请单击“它在测试中使用”。
    • 如果检测到的字符串不是机密,请单击“它是误报”。
    • 如果机密是真实的,但你打算稍后修复它,请单击“稍后修复”。
  2. 单击“允许我推送此机密”。
  3. 在三个小时内在命令行上重新尝试推送。 如果三小时内未推送,则需要重复此过程。

使用机密扫描作为 Web UI 的推送保护

使用 Web UI 尝试将受支持的机密提交到启用了机密扫描作为推送保护的存储库或组织时,GitHub 将阻止提交。

你将在页面顶部看到一个横幅,其中包含有关机密位置的信息,并且文件中的机密将带有下划线,以便你轻松找到它。

屏幕截图显示因机密扫描推送保护而阻止在 Web UI 中提交

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

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

可以使用 Web UI 从文件中删除机密。 删除机密后,页面顶部的横幅将发生更改,并告知你现在可以提交更改。

屏幕截图显示修复机密后允许在 Web UI 中提交

绕过机密的推送保护

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

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

如果 GitHub 阻止了一个你认为可以安全推送的机密,则可以允许该机密并指定允许的原因。

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

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

如果确认机密是真实的,并且你打算稍后修补它,你应该致力于尽快修补机密。

  1. 在 GitHub 阻止提交时显示在页面顶部的横幅中,单击“绕过保护”。

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

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

    显示窗体的屏幕截图,其中包含取消阻止机密推送的选项

  3. 单击“允许机密”。