OpenSSF Scorecard 怎样查看分支保护分数
来源:17golang原创
时间:2026-10-27 02:50:58 192浏览 收藏
想用 OpenSSF Scorecard 查看一个仓库的分支保护分数,先不要看页面顶部的 Aggregate score。正确做法是打开项目结果,定位 Branch-Protection 这一行,再展开详情;如果项目不在公开结果里,就用 CLI 只运行这个检查。
官方地址:https://scorecard.dev/viewer/
Branch-Protection 是一个 0–10 分的单项检查,而且采用分层计分:Tier 1 没通过时,后面即使配置得很完整,也不会直接拿到更高层级的分数。
- 先找对指标:看
Branch-Protection,不要用总分代替它。 - 再看分层:3、6、8、9、10 分分别对应不同的保护门槛。
- 最后看范围:Scorecard 主要判断默认分支和发布分支,令牌权限也会影响可见设置。
OpenSSF Scorecard 查看入口怎么选
公开项目可以使用 Scorecard Viewer,把仓库路径作为查询对象,进入结果页后在检查列表中找到 Branch-Protection。这里要区分两类数字:Aggregate score 是所有检查按风险权重计算的总分,Branch-Protection 旁边的数字才是分支保护单项分数。
如果 Viewer 没有现成结果,或你想针对某个仓库即时查看,可以用 CLI。官方 CLI 支持用 --checks 缩小检查范围,用 --show-details 展开原因:
# 只查看目标仓库的分支保护检查,并展开每条规则的原因 scorecard --repo=github.com/your-org/your-repo \ --checks=Branch-Protection \ --show-details # 需要脚本读取结果时,改为官方支持的 JSON 格式 scorecard --repo=github.com/your-org/your-repo \ --checks=Branch-Protection \ --format=json
把 your-org/your-repo 换成实际仓库路径即可。查看结果时先确认仓库对象没有写错,再记录单项分数和原因文本,避免把另一个项目的总分当成当前仓库的分支保护结论。

Branch-Protection 的 0–10 分怎样读
Scorecard 的 Branch-Protection 不是把每个开关简单相加,而是逐层满足门槛。当前官方检查文档给出的阅读方式可以整理成下面这张速查表:
| 最高层级 | 需要满足的核心条件 | 对应分数 |
|---|---|---|
| Tier 1 | 禁止强制推送、禁止删除分支 | 3/10 |
| Tier 2 | 至少 1 名审核者;管理员变更也走 PR;分支保持最新或使用合并队列;审核最近一次可审查推送 | 6/10 |
| Tier 3 | 合并前至少通过 1 项状态检查 | 8/10 |
| Tier 4 | 至少 2 名审核者,并要求 CODEOWNERS 审核 | 9/10 |
| Tier 5 | 新提交后撤销过期审核,并把管理员纳入审核约束 | 10/10 |
例如,仓库启用了两名审核者和状态检查,但仍允许删除默认分支,那么 Tier 1 没有完整满足,分数就可能停在较低层级。读详情比只看分数更重要,因为详情会指出是哪个分支、哪项规则没有满足。

为什么同一个仓库可能看到不同分数
第一类差异来自检查范围。官方文档说明,Branch-Protection 主要检查项目的默认分支和发布分支;某个开发分支设置得很严,并不会自动把默认分支的分数抬高。阅读详情时要看它列出的分支名,而不是只看仓库里任意一条规则。
第二类差异来自权限。DismissStaleReviews、EnforceAdmins、最近一次可审查推送和严格状态检查等设置,可能需要管理员令牌才能完整读取。令牌权限不足时,Scorecard 会基于它能访问到的设置计算结果;这时不要把“未显示”直接等同于“仓库未配置”。
第三类差异来自规则集覆盖。GitHub 的 Repository Rules 可以覆盖分支保护规则的部分能力,Scorecard 的官方说明也提示规则集和经典 Branch Protection 的可读权限不同。排查时把分支名、规则来源和访问权限一起记录。
按分数缺口安排修复和复查
查看分数的目的不是追求一个脱离场景的数字,而是找到下一项实际控制。可以按下面顺序处理:
- 先补 Tier 1:关闭默认分支和发布分支的强推、删除能力,避免公共历史被直接改写。
- 再补审核门槛:至少要求一名独立审核者;团队规模允许时再增加第二名审核者和 CODEOWNERS。
- 补齐合并前检查:把真正能阻止缺陷进入主分支的 CI 状态检查设为必需,而不是只运行但不阻塞合并。
- 确认管理员边界:决定管理员是否也必须走 PR、是否撤销过期审核,并使用足够权限重新读取详情。
复查时只比较同一个仓库、同一组目标分支和同一权限条件下的结果。如果只换了令牌或规则集,而没有保留这些上下文,分数变化很难说明真实配置变好了还是读取范围变了。
常见问题
Branch-Protection 分数和 Scorecard 总分有什么区别?
Branch-Protection 是单项检查,范围是分支保护;Aggregate score 是多个检查按风险权重合成的总分。要回答“分支保护做得怎样”,应引用单项分数和详情。
为什么设置了很多规则,分数还是只有 3 分?
先查 Tier 1 的强推和删除保护。Scorecard 是分层计分,低层级未完整满足时,高层级条件不会直接叠加。
没有管理员令牌还能查看吗?
可以查看,但部分仅管理员可读的设置可能无法完整判断。应在结果里保留权限条件,必要时用有权限的维护者令牌重新运行;不要把权限不可见当成规则一定缺失。
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
125 收藏
-
377 收藏
-
467 收藏
-
299 收藏
-
292 收藏
-
103 收藏
-
484 收藏
-
241 收藏
-
372 收藏
-
295 收藏
-
478 收藏
-
474 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 立即学习 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 立即学习 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 立即学习 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 立即学习 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 立即学习 485次学习