导语:
截至 2026 年 3 月 24 日,GitHub 在安全侧最值得注意的更新,不是新增了一个“更强”的扫描器,而是继续压缩了 PR 安全反馈时间。当天发布的 Faster incremental analysis with CodeQL in pull requests,把 C#、Java、JavaScript/TypeScript、Python、Ruby 的 PR 扫描进一步提速;前一天又把 push protection exemptions 下放到了仓库设置层。这两个动作放在一起看,说明安全门禁正在从“统一拦截”转向“更快反馈 + 更细分治理”。
很多团队在 DevSecOps 上卡住,不是因为没有工具,而是把所有安全动作都堆在同一个阶段。PR 扫描慢,开发者等不及;密钥拦截又只有组织层特权,业务团队绕不过去,只能开旁路;最后结果是大家表面上“启用了安全平台”,实际上安全系统被视为交付阻力。现在反馈速度变快、豁免颗粒度变细,正好到了重构门禁设计的时候。
1. 这次提速为什么重要
CodeQL 这次的核心变化,不是简单多加几台机器,而是把“变更代码数据库”和“整库缓存数据库”组合起来用。对中大型仓库,这意味着 PR 阶段终于可以更稳定地做到几分钟内返回结果。安全门禁能不能落地,往往不取决于检测率,而取决于开发者愿不愿意在提交链路里等它。
如果一个团队的 PR 安全扫描还要十几分钟甚至更久,开发者自然会想办法绕过。速度一旦降下来,安全检查才有资格真正进入主干流程,而不是停留在“夜间跑一次”的补丁位置。
2. 更合理的门禁分层
我建议把代码安全检查拆成三层,而不是一股脑放进一个流水线。
第一层是 PR 快速门禁。
这里只放增量 CodeQL、密钥扫描、基础依赖策略。目标是尽快发现新引入的问题,而不是一次性做完所有审计。
第二层是每日整库扫描。
夜间或低峰时段跑全量 CodeQL、全量依赖审计和基线漂移检查。它的职责是补齐 PR 阶段无法覆盖的上下文。
第三层是发布前审计。
针对高风险仓库增加权限模型、IaC、镜像、许可证和供应链检查,把风险聚焦到真正要上线的产物上。
3. 具体操作流程
先确认 PR 侧走默认 CodeQL query suite。
GitHub 明确说明,这轮增量加速主要适用于默认 query suite 与build mode none的提取机制。先拿到平台默认收益,再考虑个性化扩展。用仓库维度梳理扫描时长。
把仓库按三档分组:三分钟以内、三到七分钟、七分钟以上。慢仓库优先看是不是项目结构过大、构建步骤过重、语言矩阵过宽。把密钥拦截豁免纳入显式流程。
3 月 23 日的新能力允许在仓库设置里配置 push protection exemption,但这不应该变成“业务自己放开”。正确做法是:豁免必须绑定工单、绑定角色、绑定时效。每周复盘误报和漏报。
增量扫描变快以后,团队更应该把精力放在“哪些规则总被忽略、哪些 bypass 经常发生”。不然只是更快地产生没人看的告警。给高风险语言栈单独补控。
例如 Java 仓库配合 Java 26 支持升级后,应该同步检查构建版本识别是否正确;JavaScript/TypeScript 仓库则要把 React 包装组件等新支持场景纳入基线。
4. 关于豁免,我建议更保守一点
仓库级 push protection exemption 是一把双刃剑。它确实让业务团队能更快处理历史遗留问题,但也会诱发“先豁免再说”的习惯。一个靠谱的策略应该是:
- 默认不开放长期豁免。
- 仅允许指定角色、指定 app、指定时间窗。
- 所有豁免都进入审计报表。
- 同一仓库连续两次申请豁免时必须触发专项复盘。
否则这个能力很容易从“精细治理”滑向“分布式放水”。
5. 本周可执行的安全改造清单
- 给所有核心仓库记录当前 PR 扫描耗时。
- 把 PR 安全门禁和夜间整库扫描分开统计。
- 检查哪些仓库仍在用过重的自定义 CodeQL 流程。
- 为 push protection exemption 建立工单编号和到期时间。
- 复盘最近 30 天 bypass、漏扫、误报最多的仓库。
6. 结语
安全左移讲了很多年,真正拦住它的往往不是理念,而是等待时间和治理颗粒度。3 月 24 日这次 CodeQL 增量提速,再加上 3 月 23 日的仓库级密钥豁免配置,已经给了团队一个很现实的机会:把 PR 安全门禁从“大家都讨厌的慢步骤”,改成“开发者愿意接受的快反馈”。如果还不趁这个窗口重构流程,后面只会继续在误报、绕过和投诉里打转。
参考资料
- GitHub Changelog: Faster incremental analysis with CodeQL in pull requests
https://github.blog/changelog/2026-03-24-faster-incremental-analysis-with-codeql-in-pull-requests/ - GitHub Changelog: Push protection exemptions from repository settings
https://github.blog/changelog/2026-03-23-push-protection-exemptions-from-repository-settings/ - GitHub Changelog: Secret scanning pattern updates — March 2026
https://github.blog/changelog/2026-03-10-secret-scanning-pattern-updates-march-2026 - GitHub Changelog: CodeQL 2.24.3 adds Java 26 support and other improvements
https://github.blog/changelog/2026-03-10-codeql-2-24-3-adds-java-26-support-and-other-improvements/