Skip to main content

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

存储库和组织的推送保护

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

Secret scanning 可用于 GitHub Enterprise Server 中的组织拥有的存储库。 有关详细信息,请参阅 “关于机密扫描”和“关于 GitHub 高级安全性”。

注意:站点管理员必须为 你的 GitHub Enterprise Server 实例 启用 secret scanning,你才能使用这些功能。 有关详细信息,请参阅“为设备配置密码扫描”。

如果企业所有者在企业级别设置了 GitHub Advanced Security (GHAS) 策略,则你可能无法启用或禁用 secret scanning。 有关详细信息,请参阅“强制实施企业的代码安全性和分析策略”。

存储库和组织的推送保护简介

截至目前,secret scanning 在推送后检查机密,并向用户提醒公开的机密。 为你的组织或存储库启用推送保护时,secret scanning 还会检查推送中是否存在高置信度机密(经识别误报率低的机密)。 Secret scanning 列出了它检测到的所有机密,便于作者进行查看和删除,或者根据需要允许推送这些机密。

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

  • 在存储库的“安全性”选项卡中创建一个警报,状态如下表所述。
  • 将绕过事件添加到审核日志。

可以监视安全警报,了解用户何时绕过推送保护并创建警报。 有关详细信息,请参阅“审核安全警报”。

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

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

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

启用 secret scanning 作为推送保护

若要在公共存储库中使用 secret scanning 作为推送保护,组织或存储库需要启用 secret scanning。有关详细信息,请参阅 “管理组织的安全和分析设置”、“管理存储库的安全和分析设置”和“关于 GitHub 高级安全性”。

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

注意:**** 在启用了 secret scanning 作为推送保护的情况下为存储库创建分支时,默认情况下不会在分支上启用此功能。 可以在分支上启用此功能,就像在独立存储库上启用它一样。

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

可以使用“代码安全性和分析”的组织设置页,为组织中的所有现有存储库启用或禁用作为推送保护的 secret scanning。

  1. 在 你的 GitHub Enterprise Server 实例 上,导航到组织的主页。

  2. 在组织名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择 下拉菜单,然后单击“设置” 。

    组织的水平导航栏的屏幕截图。 “设置”选项卡以深橙色标出。

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

  4. 在“代码安全性和分析”下,查找“GitHub Advanced Security”。

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

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

有关在整个组织中启用安全功能的详细信息,请参阅“保护你的组织”。

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

  1. 在 你的 GitHub Enterprise Server 实例 上,导航到存储库的主页。
  2. 在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。 存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。
  3. 在边栏的“安全性”部分中,单击“ 代码安全性和分析”。
  4. 在“代码安全性和分析”下,查找“GitHub Advanced Security”。
  5. 在“Secret scanning”下的“推送保护”下,单击“启用”。 演示如何为存储库的 secret scanning 启用推送保护的屏幕截图。

为自定义模式启用推送保护

可以启用 secret scanning 作为在企业、组织或存储库级别存储的自定义模式的推送保护。

为企业中存储的自定义模式启用推送保护

注意:

  • 若要为自定义模式启用推送保护,需要在企业级启用 secret scanning 作为推送保护。 有关详细信息,请参阅“存储库和组织的推送保护”。
  • 为常见的自定义模式启用推送保护可能会对参与者造成干扰。

在企业级别为自定义模式启用推送保护之前,还必须使用试运行测试自定义模式。 只能对具有管理访问权限的存储库执行试运行。 如果企业所有者想要对组织中的任何存储库执行试运行,则必须分配有组织所有者角色才可以。 有关详细信息,请参阅“管理企业拥有的组织中的角色”。

  1. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“企业设置”。

    单击 GitHub Enterprise Server 上的个人资料照片时显示下拉菜单的屏幕截图。 “企业设置”选项以深橙色边框突出显示。

  2. 在企业帐户边栏中,单击“ 策略”。 1. 在 “策略”下,单击“Advanced Security”。

  3. 在“GitHub Advanced Security”下,单击“安全功能”选项卡。 1. 在“Secret scanning”的“自定义模式”下,单击 以获取感兴趣的模式。

注意:在企业级别,只能为已创建的自定义模式编辑和启用推送保护。

1. 若要为自定义模式启用推送保护,请向下滚动到“推送保护”,然后单击“启用”。

自定义模式页面的屏幕截图,其中“启用推送保护”按钮以深橙色边框突出显示。

启用 secret scanning 作为组织中自定义模式的推送保护

在组织级别为自定义模式启用推送保护之前,必须确保在组织中为要扫描的存储库启用 secret scanning。 要启用组织中所有存储库上的 secret scanning,请参阅“管理组织的安全和分析设置”。

  1. 在 GitHub Enterprise Server 的右上角,单击你的个人资料照片,然后单击“你的组织”。

    @octocat 的个人资料图片下的下拉菜单的屏幕截图。 “你的组织”以深橙色标出。

  2. 在组织旁边,单击“设置”。

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

  4. 在“代码安全性和分析”下,查找“GitHub Advanced Security”。

  5. 在“Secret scanning”的“自定义模式”下,单击 以获取感兴趣的模式。

  6. 若要为自定义模式启用推送保护,请向下滚动到“推送保护”,然后单击“启用”。

    注意:

    • 自定义模式的推送保护仅适用于组织中启用了 secret scanning 作为推送保护的存储库。 有关详细信息,请参阅“存储库和组织的推送保护”。
    • 为常见的自定义模式启用推送保护可能会对参与者造成干扰。

    自定义模式页的“推送保护”部分的屏幕截图。 标有“启用”的按钮用深橙色框出。

启用 secret scanning 作为存储库中自定义模式的推送保护

在存储库级别为自定义模式启用推送保护之前,必须定义存储库的自定义模式,并在存储库中对其进行测试。 有关详细信息,请参阅“为机密扫描定义自定义模式”。

  1. 在 你的 GitHub Enterprise Server 实例 上,导航到存储库的主页。

  2. 在存储库名称下,单击 “设置”。 如果看不到“设置”选项卡,请选择“”下拉菜单,然后单击“设置”********。 存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

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

  4. 在“代码安全性和分析”下,查找“GitHub Advanced Security”。

  5. 在“Secret scanning”的“自定义模式”下,单击 以获取感兴趣的模式。

  6. 若要为自定义模式启用推送保护,请向下滚动到“推送保护”,然后单击“启用”。

    自定义模式页的“推送保护”部分的屏幕截图。 标有“启用”的按钮用深橙色框出。

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

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

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

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

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

注释

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

允许推送被阻止的机密

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

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

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

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

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

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

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

可以使用 Web UI 从文件中删除机密。 删除机密后,即可提交更改。

绕过机密的推送保护

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

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

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

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

  1. 在 GitHub 阻止提交时出现的对话框中,查看机密的名称和位置。
  2. 选择最能描述为何应该能够推送机密的选项。
    • 如果机密仅在测试中使用,并且不会构成任何威胁,请单击“它在测试中使用”。
    • 如果检测到的字符串不是机密,请单击“它是误报”。
    • 如果机密是真实的,但你打算稍后修复它,请单击“稍后修复”。
  3. 单击“允许机密”。