Skip to main content

存储库和组织的推送保护

通过对存储库和组织的推送保护,secret scanning 会阻止参与者将机密推送到存储库,并在参与者绕过该阻止时生成警报。

谁可以使用此功能?

用户拥有的公共存储库可免费使用存储库和组织推送保护功能。 使用 GitHub Enterprise Cloud 且拥有 GitHub Advanced Security 许可证的组织也可以在其专用存储库和内部存储库上启用推送保护。

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

截至目前,secret scanning 在推送后检查机密,并向用户提醒公开的机密。__ 为组织或存储库启用推送保护时,secret scanning 还会检查推送是否支持受支持的机密。 Secret scanning 列出了它检测到的所有机密,便于作者进行查看和删除,或者根据需要推送这些机密。 Secret scanning 还可以检查推送的自定义模式。 有关详细信息,请参阅“为机密扫描定义自定义模式”。

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

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

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

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

默认情况下,对存储库具有写入访问权限的任何人都可以通过指定表中概述的绕过原因之一来选择绕过推送保护。 如果想更好地控制哪些参与者可以绕过推送保护,以及应允许哪些包含机密的推送,则可以启用推送保护委派绕过。 利用委派绕过,可以配置一组指定的审阅者来监督和管理为推送到存储库的参与者绕过推送保护的请求。 有关详细信息,请参阅“为推送保护启用委派绕过”。

在存储库或组织的 secret scanning 警报页上,你可以应用 bypassed:true 筛选条件轻松查看哪些警报是用户绕过推送保护产生的结果。 有关查看这些警报的详细信息,请参阅“管理来自机密扫描的警报”。

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

如果是组织所有者或安全管理员,则可以查看有关推送保护在整个组织中执行情况的指标。 有关详细信息,请参阅“查看组织中机密扫描推送保护的指标”。

**** 注意:github.dev 基于 Web 的编辑器不支持推送保护。 有关编辑器的详细信息,请参阅“github.dev 基于 web 的编辑器”。

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

启用 secret scanning 作为推送保护

若要在公共存储库中使用 secret scanning 作为推送保护,企业、组织或存储库需要启用 secret scanning。若要在专用或内部存储库、 或适用于 Enterprise Managed Users, 的用户自有存储库 中使用 secret scanning 作为推送保护,企业或组织还需要启用 GitHub Advanced Security。有关详细信息,请参阅 “Managing GitHub Advanced Security features for your enterprise”、“管理组织的安全和分析设置”、“管理存储库的安全和分析设置”和“关于 GitHub 高级安全性”。

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

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

还可以通过个人帐户设置为所有现有用户拥有的公共存储库启用推送保护。 对于新创建的任何公共存储库,默认情况下将启用推送保护。 有关详细信息,请参阅“为存储库配置机密扫描”。

企业管理员还可以通过 API 启用或禁用 secret scanning 作为企业的推送保护。 有关详细信息,请参阅“适用于企业代码安全性和分析的 REST API 终结点”。

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

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

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

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

  3. 在企业帐户边栏中,单击“设置”。

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

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

    “代码安全性和分析”页的“推送保护”部分的屏幕截图。 标记为“全部启用”和“全部禁用”的两个按钮以深橙色突出显示。

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

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

    “代码安全性和分析”页的“推送保护”部分的屏幕截图。 “在阻止提交时在 CLI 和 Web UI 中添加资源链接”复选框和自定义链接文本字段以深橙色边框突出显示。

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

可以使用安全概述来查找一组存储库,并同时启用或禁用 secret scanning 作为所有这些存储库的推送保护。 有关详细信息,请参阅“为多个存储库启用安全功能”。

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

  1. 在 GitHub.com 上,导航到组织的主页。

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

    组织配置文件中选项卡的屏幕截图。 “设置”选项卡以深橙色标出。

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

Note

如果你的组织已注册参加 security configurations 和 global settings 公共 beta 版本,则会看到“代码安全”下拉菜单,而不是“代码安全和分析”下拉菜单。 选择 代码安全,然后单击全局设置。 有关如何为具有 security configurations 大规模启用推送保护和其他安全功能的后续步骤,请参阅“在组织中应用 GitHub 建议的安全配置”。

  1. 在“代码安全性和分析”下,查找“GitHub Advanced Security”。1. 在“Secret scanning”下的“推送保护”下,单击“全部启用”。

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

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

    “代码安全性和分析”页的“推送保护”部分的屏幕截图。 “在阻止提交时在 CLI 和 Web UI 中添加资源链接”复选框和自定义链接文本字段以深橙色边框突出显示。

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

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

  1. 在 GitHub.com 上,导航到存储库的主页。

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

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

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

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

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

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

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

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

注意:

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

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

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

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

  3. 在企业帐户边栏中,单击“ 策略”。 1. 在 “策略”下,单击“代码安全性和分析”。

  4. 在“代码安全性和分析”下,单击“安全功能”。 1. 在“Secret scanning”的“自定义模式”下,单击 以获取感兴趣的模式。

    Note

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

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

    Note

    启用推送保护的选项仅对已发布的模式可见。

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

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

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

  1. 在 GitHub 的右上角,选择个人资料照片,然后单击 你的组织”。
  2. 在组织旁边,单击“设置”。
  3. 在边栏的“安全性”部分中,单击“ 代码安全性和分析”。

Note

如果你的组织已注册参加 security configurations 和 global settings 公共 beta 版本,则会看到“代码安全”下拉菜单,而不是“代码安全和分析”下拉菜单。 选择 代码安全,然后单击“Global settings”。 有关如何使用 global settings 为组织管理自定义模式的后续步骤,请参阅“配置组织的全局安全设置”。 如需了解有关如何为特定自定义模式启用推送保护的信息,请参阅以下步骤。

  1. 在“代码安全性和分析”下,查找“GitHub Advanced Security”。1. 在“Secret scanning”的“自定义模式”下,单击 以获取感兴趣的模式。

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

    注意:

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

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

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

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

  1. 在 GitHub.com 上,导航到存储库的主页。

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

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

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

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

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

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

    Note

    启用推送保护的选项仅对已发布的模式可见。

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

启用推送保护委派绕过

Note

推送保护委派绕过目前为 beta 版,可能会发生更改。

通过推送保护委派绕过,可以控制谁可以绕过推送保护以及应允许哪些阻止的推送。

默认情况下,启用推送保护时,对存储库具有写入访问权限的任何人都可以通过指定允许包含机密的推送的原因来选择绕过保护。 通过委派绕过,存储库的参与者有义务请求“绕过特权”。 请求将发送到指定的审阅者组,他们批准或拒绝绕过推送保护的请求。

如果批准绕过推送保护的请求,则参与者可以推送包含机密的提交。 如果请求被拒绝,则参与者必须在再次推送之前从包含机密的提交中删除机密。

若要配置委派绕过,组织所有者或存储库管理员首先会创建“绕过列表”。 绕过列表包括特定角色和团队,例如安全团队或存储库管理员,他们负责监督来自非成员的绕过推送保护的请求。 有关详细信息,请参阅“为组织配置委派绕过”和“为存储库配置委派绕过”。

绕过列表视图的成员通过存储库“安全”选项卡中的“推送保护绕过”页管理请求。 有关详细信息,请参阅“管理绕过推送保护的请求”。

绕过列表的成员仍然受到保护,不会意外地将机密推送到存储库。 当绕过列表的成员试图推送包含机密的提交时,仍会阻止其推送,但他们可以通过指定允许推送的原因来绕过阻止。 绕过列表的成员不必请求来自其他成员的绕过特权即可替代阻止。

为组织配置委派绕过

  1. 在 GitHub.com 上,导航到组织的主页。

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

    组织配置文件中选项卡的屏幕截图。 “设置”选项卡以深橙色标出。

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

Note

如果你的组织已注册参加 security configurations 和 global settings 公共 beta 版本,则会看到“代码安全”下拉菜单,而不是“代码安全和分析”下拉菜单。 选择 代码安全,然后单击“Global settings”。 1. 在“代码安全性和分析”下,查找“GitHub Advanced Security”。

  1. 在“推送保护”下,在“谁可以绕过 secret scanning 的推送保护”右侧,选择下拉菜单,然后单击“特定角色或团队”。
  2. 在“绕过列表”下,单击“添加角色或团队”。

    Note

    不能将机密团队添加到旁路列表。

  3. 在对话框中,选择要添加到绕过列表的角色和团队,然后单击“添加选定项”。

为存储库配置委派绕过

Note

如果组织所有者在组织级别配置委派绕过,则会禁用存储库级别的设置。

  1. 在 GitHub.com 上,导航到存储库的主页。

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

    存储库标头的屏幕截图,其中显示了选项卡。 “设置”选项卡以深橙色边框突出显示。

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

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

  5. 在“推送保护”下,在“谁可以绕过 secret scanning 的推送保护”右侧,选择下拉菜单,然后单击“特定角色或团队”。

  6. 在“绕过列表”下,单击“添加角色或团队”。

    Note

    不能将机密团队添加到旁路列表。

  7. 在对话框中,选择要添加到绕过列表的角色和团队,然后单击“添加选定项”。

管理绕过推送保护的请求

可以在存储库的“安全”选项卡下的“推送保护绕过”页上查看和管理绕过特权的所有请求。

可以按审批者(绕过列表的成员)、请求者(发出请求的参与者)、时间范围和状态来筛选请求。 将为请求分配以下状态:

状态说明
Cancelled参与者已取消请求。
Completed请求已获批准,提交已推送至存储库。
Denied请求已审查并被拒绝。
Expired请求已过期。 请求的有效期为 7 天。
Open请求尚未审查,或者已批准,但提交尚未推送到存储库。

当参与者请求绕过特权来推送包含机密的提交时,绕过列表的成员都会收到一个电子邮件通知,其包含请求的链接。 然后,绕过列表的成员有 7 天的时间审查请求,并在请求过期之前批准或拒绝请求。

参与者会通过电子邮件通知该决定,必须采取所需的操作。 如果请求获得批准,则参与者可以将包含机密的提交推送到存储库。 如果请求被拒绝,则参与者必须从提交中删除机密才能成功地将提交推送到存储库。

管理在存储库级别绕过推送保护的请求

  1. 在 GitHub.com 上,导航到存储库的主页。
  2. 在存储库名称下,单击“ 安全性”。 如果看不到“安全性”选项卡,请选择 下拉菜单并单击“安全性” 。
    存储库标头的屏幕截图,其中显示了选项卡。 “安全性”选项卡以深橙色边框突出显示。
  3. 在左侧边栏中的“请求”下,单击“推送保护绕过”。
  4. 选择“所有状态”下拉菜单,然后单击“打开”以查看正在等待审查的请求。
  5. 单击要审查的请求。
  6. 查看请求的详细信息。
  7. 若要允许参与者推送包含机密的提交,请单击“批准绕过请求”。 或者,若要要求参与者从提交中删除机密,请单击“拒绝绕过请求”。

延伸阅读