我们创建 Scorecard 的目的是帮助开源维护者改进其安全最佳实践,并帮助开源消费者判断其依赖项是否安全。
Scorecard 是一款自动化工具,用于评估与软件安全相关的一系列重要启发式方法(“检查项”),并为每个检查项分配 0-10 的分数。您可以使用这些分数了解具体需要改进的领域,以增强项目的安全态势。您还可以评估依赖项引入的风险,并就接受这些风险、评估替代方案或与维护者合作进行改进做出明智的决策。
Scorecard 标志的灵感来源:“你通过了!全是 D……还有一个 A!”
自动化分析并做出关于开源项目安全态势的信任决策。
利用这些数据主动提高世界所依赖的关键项目的安全态势。
作为现有政策的衡量工具
如果开源软件消费者对其依赖项有特定行为要求,Scorecard 可用于衡量这些行为。在 V5 版本中,我们认为如果有受支持的分析,结构化结果(Structured Results)是实现这一目标的一种方式。与其依赖 X/10 的综合评分或 Y/10 的维护评分,开源软件消费者可能希望确保其依赖的仓库没有被归档(这由 archived 探针覆盖)。OpenSSF 在其项目安全基线中采用了这种方法。
成为所有项目都应遵循的确定性报告或要求。
Scorecard 并非旨在成为一刀切的解决方案。我们生成结果的每一步都是有倾向性的:包含或排除哪些检查项、每个检查项的重要性以及如何计算分数。检查项本身是启发式的;存在误报和漏报。
无论是由于适用性、可行性还是观点问题,Scorecard 结果中包含或排除的内容都引发了大量讨论。创建一个让所有人都满意的 Scorecard 是不可能的,因为不同的受众会关注不同的行为子集。
特别是综合评分,它无法告诉你仓库正在或未进行哪些具体行为。许多检查项的分数被聚合为单一分数,并且有多种方式得出相同分数。随着我们添加新的启发式方法或改进现有方法,这些分数会发生变化。
Scorecard 已在数千个项目上运行,用于监控和跟踪安全指标。使用 Scorecard 的知名项目包括:
要查看由 Scorecard 定期扫描的项目的评分,请访问 webviewer。您也可以替换以下模板链接中的占位文本(平台、用户/组织名称和仓库名称)来生成仓库的自定义 Scorecard 链接:
https://scorecard.dev/viewer/?uri=<github_or_gitlab>.com/<user_name_or_org>/<repository_name>
例如:
要查看未包含在 webviewer 中的项目的评分,请使用 Scorecard CLI。
我们每周对根据直接依赖项判断的最关键的 100 万个开源项目运行 Scorecard 扫描,并将结果发布到 BigQuery 公开数据集 中。
该数据可在公开的 BigQuery 数据集 openssf:scorecardcron.scorecard-v2 中获得。最新结果可在 BigQuery 视图 openssf:scorecardcron.scorecard-v2_latest 中获得。
您可以使用 BigQuery Explorer 通过导航到“添加数据”>“按名称收藏项目”>“openssf”来查询数据。
例如,您可能对项目评分随时间的变化感兴趣:```sql
SELECT date, score FROM openssf.scorecardcron.scorecard-v2 WHERE repo.name="github.com/ossf/scorecard" ORDER BY date ASC
您可以使用 [`bq`](https://cloud.google.com/bigquery/docs/bq-command-line-tool) 工具将最新结果以JSON格式提取到Google Cloud存储中:```
# Get the latest PARTITION_ID
bq query --nouse_legacy_sql 'SELECT partition_id FROM
openssf.scorecardcron.INFORMATION_SCHEMA.PARTITIONS WHERE table_name="scorecard-v2"
AND partition_id!="__NULL__" ORDER BY partition_id DESC
LIMIT 1'
# Extract to GCS
bq extract --destination_format=NEWLINE_DELIMITED_JSON
'openssf:scorecardcron.scorecard-v2$<partition_id>' gs://bucket-name/filename-*.json
被检查的项目列表可在本仓库的
cron/internal/data/projects.csv
文件中找到。如果您希望我们追踪更多项目,请随时通过 Pull Request 提交其他项目。目前,此列表仅来源于 托管在 GitHub 上的项目。我们计划在不久的将来扩展到其他源代码控制系统上的项目。
在您拥有的 GitHub 项目上使用 Scorecard 最简单的方式是通过 Scorecard GitHub Action。该 Action 会在每次仓库变更时运行,并发出警报,维护者可以在仓库的“安全”标签页中查看。更多信息,请参阅 Scorecard GitHub Action 的安装说明。
要查询 OSS 项目的预计算分数,请使用 REST API。
从我们的每周扫描计算出的分数省略了 CI-Tests、Contributors 和 Dependency-Update-Tool 检查,因为在大规模运行时相关的 API 成本较高。
API 结果通过 CDN 缓存(感谢 Fastly 及其 Fast Forward 项目)。当新结果可用时,CDN 中的缓存会被清除,但如果您发现数据过时的问题,请提交 issue。
要使您的项目在 REST API 上可用,请在 Scorecard GitHub Action 设置中设置
publish_results: true。
REST API 提供的数据采用 CDLA Permissive 2.0 许可。
在 Scorecard GitHub Actions 中启用 publish_results: true
还可以让维护者在其仓库上显示 Scorecard 徽章,以展示他们的工作成果。该徽章还会随着仓库的每次变更自动更新。更多详情请参阅 这篇 OSSF 博客文章。
要在项目仓库中包含徽章,只需在您的 README 中添加以下 Markdown:```
### Scorecard 命令行界面
要对你并不拥有的项目运行 Scorecard 扫描,请使用命令行界面安装选项。
#### 先决条件
平台:目前,Scorecard 支持 OSX 和 Linux 平台。如果你使用的是 Windows 操作系统,可能会遇到问题。欢迎为支持 Windows 做出贡献。
语言:你必须安装 GoLang 才能运行 Scorecard (https://golang.org/doc/install)
#### 安装
##### Docker
`scorecard` 可作为 Docker 容器使用:```shell
docker pull ghcr.io/ossf/scorecard:latest
要使用特定版本的 Scorecard(例如 v3.2.1),请运行:```shell docker pull ghcr.io/ossf/scorecard:v3.2.1
##### 独立使用
要安装独立版的 Scorecard:
访问我们的最新[发布页面](https://github.com/ossf/scorecard/releases/latest),并下载适用于您操作系统的正确 zip 文件。
将二进制文件添加到您的 `GOPATH/bin` 目录(如有必要,使用 `go env GOPATH` 确定您的目录)。
###### 验证下载版本的 SLSA 来源