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