什么是推送保护?
推送保护是一项机密扫描功能,旨在防止硬编码凭证(如机密或令牌)被推送到您的仓库。它不会在泄漏后提醒您,而是在机密到达仓库之前,阻止包含机密的推送。
推送保护如何工作
推送保护阻止检测到的机密于
- 来自命令行的推送
- 在 GitHub UI 中进行的提交
- 向 GitHub 仓库上传文件
- 对 REST API 的请求
- 与 GitHub MCP 服务器的交互(仅限公共仓库)
当推送保护在推送尝试期间检测到潜在机密时,它会阻止该推送并提供一条详细信息,说明阻止的原因。您需要审查相关代码,删除任何敏感信息,然后重新尝试推送。
推送保护的类型
推送保护有两种类型
针对仓库的推送保护
您可以在仓库、组织或企业层级为仓库启用推送保护。这种形式的推送保护
- 需要先启用 GitHub Secret Protection
- 默认情况下已禁用,可由仓库管理员、组织所有者、安全管理员或企业所有者启用
- 阻止包含机密的推送到达特定受保护的仓库
- 在仓库、组织和企业的 安全与质量 选项卡中为推送保护绕过生成警报
提示
无论推送保护是否已启用,GitHub Team 和 GitHub Enterprise 的组织均可免费运行报告,扫描其代码中泄漏的机密。报告还会显示如果启用了推送保护,本可以防止多少机密泄漏。详见 关于 GitHub 的机密安全。
针对用户的推送保护
针对用户的推送保护仅在 GitHub.com 上可用,且特定于您的 GitHub 账户。这种形式的推送保护
- 默认已启用
- 阻止您向 GitHub 上的公共仓库推送机密
- 除非仓库层面也启用了推送保护,否则绕过时不会生成警报
推送保护的绕过与警报
对于仓库的推送保护,默认情况下,任何拥有写权限的成员都可以通过提供绕过原因来绕过推送保护。当贡献者绕过阻止时,GitHub
- 在仓库、组织和企业的 安全与质量 选项卡中创建警报
- 将绕过事件添加到审计日志中
- 向个人账户、组织和企业所有者、安全管理员以及关注该仓库的仓库管理员发送电子邮件警报,邮件中包含机密链接及其被允许的原因
此表显示用户可指定的每个绕过原因的警报行为。
| 绕过原因 | 警报行为 |
|---|---|
| 用于测试 | GitHub 创建已关闭的警报,标记为“用于测试” |
| 误报 | GitHub 创建已关闭的警报,标记为“误报” |
| 我稍后会修复 | GitHub 创建未关闭的警报 |
如果您希望更细致地控制哪些贡献者可以绕过推送保护以及哪些包含机密的推送应被允许,可以为推送保护配置委派绕过。使用委派绕过,您可以授予参与者
- 绕过特权,允许他们自行绕过推送保护,并审阅和批准其他贡献者的绕过请求
- 免除推送保护,允许他们推送提交而不触发推送保护
推送保护的好处
- 预防性安全: 推送保护通过在推送时扫描代码中的硬编码机密,充当前线防御机制。这种预防性做法可在机密被写入仓库历史之前阻止泄漏,从而更容易处理和修复威胁。
- 即时反馈: 开发者在推送尝试期间若检测到潜在机密,会立即收到反馈。此即时通知可帮助快速修复,降低敏感信息暴露的可能性。
- 降低凭证泄漏风险: 通过阻止包含硬编码凭证的提交,推送保护显著降低意外凭证泄漏和机密扩散的风险,有助于防止潜在泄露并维护代码库完整性。
- 高效的机密管理: 开发者无需事后处理已泄露的机密,而是可以在源头直接处理问题,使机密管理更高效、耗时更少。
- 灵活的绕过功能: 对于误报或必须使用特定模式的情况,您可以为用户绕过推送保护,指定用户也可使用委派绕过功能为仓库绕过推送保护。此外,您还可以完全免除受信任的参与者的推送保护。此方式在不牺牲整体安全性的前提下提供灵活性。
- 检测自定义模式的能力(组织内的仓库): 组织可以定义针对其环境独有的机密检测自定义模式。此自定义确保推送保护能够有效识别并阻止即使是非标准的机密。
自定义
在为仓库启用推送保护后,您可以通过以下方式进行自定义
- 定义自定义模式,以阻止包含独特机密模式的推送
- 指定可绕过推送保护并审批其他贡献者绕过请求的贡献者,或完全免除推送保护的贡献者
- 配置在企业或组织层级包含于推送保护的机密模式
后续步骤
启用推送保护
- 为仓库,请参阅 为您的仓库启用推送保护。
- 为组织或企业,您需要应用安全配置。请参阅 创建自定义安全配置 与 创建自定义安全配置。
有关推送保护支持的机密和服务提供商列表,请参阅 受支持的机密扫描模式。