关于推送保护
推送保护是 secret scanning 的一项功能,旨在从源头防止机密或令牌等敏感信息被推送到你的存储库。 与 secret scanning 在机密提交后检测不同,推送保护会在推送过程中主动扫描代码中的机密,若检测到则阻止推送。
推送保护可帮助你规避机密泄露相关的风险,例如资源或服务被未授权访问。 借助此功能,开发人员能获得即时反馈,并在潜在问题成为安全隐患前加以解决。
你可以启用推送保护:
- 如果你是存储库管理员或组织所有者,可在存储库/组织级别启用。 当存储库的参与者绕过推送保护时,你会在存储库的“安全”**** 选项卡中看到警报。
- 对于 GitHub 上的帐户,作为用户。 这种类型的推送保护称为“用户的推送保护”。 它可以阻止你将机密推送到 GitHub 上的任何__ 公共存储库,但不会生成任何警报。
提示
无论推送保护的启用状态如何,使用 GitHub Team 和 GitHub Enterprise 的组织都可以运行免费报告来扫描组织中的代码以查找泄漏的机密。 该报告还告诉你组织中有多少机密泄漏可以通过推送保护来阻止。 请参阅 关于 GitHub 的机密安全性。
有关推送保护支持的机密和服务提供商的信息,请参阅“Supported secret scanning patterns”。
推送保护存在一些限制。 有关详细信息,请参阅“排查机密扫描问题”。
推送保护的工作原理
推送保护会阻止在以下场景中检测到的机密:
- 从命令行推送。 请参阅“从命令行使用推送保护”。
- 在 GitHub UI 中创建的提交。 请参阅“使用 GitHub UI 中的推送保护”。
- 文件将上传到 GitHub 上的仓库中。
- 对 REST API 的请求。 请参阅“从 REST API 使用推送保护”。
- 与 GitHub MCP 服务器的交互(仅限公共仓库)。 请参阅“使用推送保护和 GitHub MCP 服务器”。
启用后,如果推送保护在推送尝试期间检测到潜在的机密,它将阻止推送并提供详细的消息,说明阻止的原因。 你需要审查相关代码,删除所有敏感信息,然后重新尝试推送。
默认情况下,对存储库具有写入访问权限的任何人都可以通过指定表中概述的绕过原因之一来选择绕过推送保护。 如果参与者绕过机密的推送保护块,GitHub:
- 在存储库的“安全性”选项卡中创建一条警报。****
- 将绕过事件添加到审核日志。
- 向监管存储库的组织或个人帐户所有者、安全管理员和存储库管理员发送一封电子邮件警报,其中包含指向机密的链接以及允许使用该机密的原因。
此表显示了用户可以绕过推送保护块的每种方式的警报行为。
| 绕过原因 | 警报行为 |
|---|---|
| 它在测试中使用 | GitHub 创建已关闭的警报,该警报解析为“在测试中使用” |
| 这是假正 | GitHub 创建已关闭的警报,该警报解析为“假正” |
| 我稍后会修复它 | GitHub 创建未结警报 |
如果想更好地控制哪些参与者可以绕过推送保护,以及应允许哪些包含机密的推送,则可以启用推送保护委派绕过。 利用委派绕过,可以配置一组指定的审阅者来监督和管理为推送到存储库的参与者绕过推送保护的请求。 有关详细信息,请参阅“关于推送保护的委派绕过”。
你还可以使用 REST API 绕过推送保护。 有关详细信息,请参阅“适用于机密扫描的 REST API 终结点”。
关于推送保护的优势
-
**预防性安全:** 推送保护在推送时扫描代码中的机密,充当第一道防御机制。 这种预防性方法有助于在潜在问题合并到你的存储库前将其发现。 -
**即时反馈:** 如果在推送尝试期间检测到潜在机密,开发人员会收到即时反馈。 这种即时通知支持快速修正,降低敏感信息泄露的可能性。 -
**降低数据泄露风险:** 通过阻止包含敏感信息的提交,推送保护大幅降低意外数据泄露的风险。 这有助于防范基础设施、服务和数据被未授权访问。 -
**高效的机密管理:** 开发人员无需事后处理泄露的机密,而是可以从源头解决问题。 这使机密管理更高效、更省时。 -
**自定义模式检测能力:** 组织可以定义自定义模式,以检测其环境特有的机密。 此自定义可确保推送保护能够有效地识别和阻止非标准机密。 -
**委派绕过以提升灵活性:** 对于出现误报或特定模式确有必要的情况,委派绕过功能允许指定用户批准特定推送。 这提供了灵活性,而不会损害整体安全性。
GitHub 上的每位用户也可以在个人设置中为自己启用推送保护。 为用户帐户启用推送保护后,无论你推送到 GitHub 上的哪个公共存储库,你的推送都会受到保护,而无需依赖该存储库是否启用了推送保护。 有关详细信息,请参阅“用户的推送保护”。
自定义推送保护
启用推送保护后,可以进一步自定义该功能:
配置推送保护的模式
在企业或组织级别自定义推送保护中包含的机密模式。 请参阅“为企业配置额外的机密扫描设置”和“配置组织的全局安全设置”。
定义自定义模式
定义自定义模式,供推送保护用于识别机密并阻止包含这些机密的推送。 有关详细信息,请参阅“为机密扫描定义自定义模式”。
配置委派绕过
指定可以绕过推送保护的参与者,并为其他参与者添加审批流程。 有关详细信息,请参阅“关于推送保护的委派绕过”。
延伸阅读
-
[AUTOTITLE](/code-security/secret-scanning/enabling-secret-scanning-features/enabling-push-protection-for-your-repository) -
[AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-from-the-command-line) -
[AUTOTITLE](/code-security/secret-scanning/working-with-secret-scanning-and-push-protection/working-with-push-protection-in-the-github-ui) -
[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/custom-patterns/defining-custom-patterns-for-secret-scanning) -
[AUTOTITLE](/code-security/secret-scanning/using-advanced-secret-scanning-and-push-protection-features/delegated-bypass-for-push-protection/about-delegated-bypass-for-push-protection)