关于推送保护
推送保护是 secret scanning 功能,旨在从一开始就防止敏感信息(如机密或令牌)推送到存储库。 推送保护与在提交机密后检测机密的 secret scanning 不同,它会在推送过程中主动扫描代码查找机密,并在检测到任何机密时阻止推送。
推送保护有助于避免与泄露机密相关的风险,如未经授权访问资源或服务。 借助此功能,开发人员可以获得即时反馈,并可在潜在问题成为安全隐患之前解决这些问题。
有关推送保护支持的机密和服务提供方的信息,请参阅“支持的机密扫描模式”。
推送保护的工作原理
推送保护的工作方式:
- 从命令行中。 请参阅“从命令行使用推送保护”。
- 在 GitHub UI 中。 请参阅“使用 GitHub UI 中的推送保护”。
- 从 REST API 中。 请参阅“从 REST API 使用推送保护”。
启用后,如果推送保护在推送尝试期间检测到潜在的机密,它将阻止推送并提供详细的消息,说明阻止的原因。 你需要查看相关代码、删除任何敏感信息并重新尝试推送。
默认情况下,对存储库具有写入访问权限的任何人都可以通过指定表中概述的绕过原因之一来选择绕过推送保护。 如果参与者绕过机密的推送保护块,GitHub:
- 在存储库的“安全性”选项卡中创建一条警报。****
- 将绕过事件添加到审核日志。
- 向监管存储库的组织或个人帐户所有者、安全管理员和存储库管理员发送一封电子邮件警报,其中包含指向机密的链接以及允许使用该机密的原因。
此表显示了用户可以绕过推送保护块的每种方式的警报行为。
绕过原因 | 警报行为 |
---|---|
它在测试中使用 | GitHub 创建已关闭的警报,该警报解析为“在测试中使用” |
这是假正 | GitHub 创建已关闭的警报,该警报解析为“假正” |
我稍后会修复它 | GitHub 创建未结警报 |
如果想更好地控制哪些参与者可以绕过推送保护,以及应允许哪些包含机密的推送,则可以启用推送保护委派绕过。 利用委派绕过,可以配置一组指定的审阅者来监督和管理为推送到存储库的参与者绕过推送保护的请求。 有关详细信息,请参阅“关于推送保护委派绕过”。
你还可以使用 REST API 绕过推送保护。 有关详细信息,请参阅“适用于机密扫描的 REST API 终结点”。
关于推送保护的优点
-
预防性安全****:推送保护通过在推送时扫描代码查找机密来充当前线防御机制。 这种预防性方法有助于在将潜在问题合并到存储库之前捕获这些问题。
-
即时反馈****:如果在推送尝试期间检测到潜在的机密,开发人员将收到即时反馈。 此即时通知可以进行快速修正,从而降低泄露敏感信息的可能性。
-
降低数据泄漏风险****:通过阻止包含敏感信息的提交,推送保护可显著降低意外数据泄露的风险。 这有助于防止未经授权访问基础结构、服务和数据。
-
高效的机密管理****:开发人员可以从源头解决问题,而不是事后地处理泄露的机密。 这使得机密管理更高效,耗时更少。
-
与 CI/CD 管道集成****:推送保护可以集成到持续集成/持续部署 (CI/CD) 管道中,确保在部署之前对每次推送扫描机密。 这为 DevOps 实践增加了额外的安全层。
-
检测自定义模式的功能****:组织可以定义用于检测其环境特有机密的自定义模式。 此自定义可确保推送保护能够有效地识别和阻止非标准机密。
-
委派绕过以实现灵活性****:对于发生误报或需要某些模式的情况,委派绕过功能允许指定用户批准特定推送。 这提供了灵活性,而不会损害整体安全性。
自定义推送保护
启用推送保护后,可以进一步自定义该功能:
与 CI/CD 管道集成
将推送保护与持续集成/持续部署 (CI/CD) 管道集成,以确保其在自动化过程中运行扫描。 这通常涉及在管道配置文件中添加步骤来调用 GitHub 的 API 或使用 GitHub Actions。
定义自定义模式
定义推送保护可用于标识机密和阻止包含这些机密的推送的自定义模式。 有关详细信息,请参阅“为机密扫描定义自定义模式”。
配置委派绕过
定义可以绕过推送保护并为其他参与者添加审批流程的参与者。 有关详细信息,请参阅“关于推送保护委派绕过”。