เราสร้าง Scorecard เพื่อช่วยผู้ดูแลโอเพ่นซอร์สปรับปรุงแนวทางปฏิบัติด้านความปลอดภัยที่ดีที่สุด และเพื่อช่วยให้ผู้บริโภคโอเพ่นซอร์สตัดสินว่าการพึ่งพาของพวกเขานั้นปลอดภัยหรือไม่
Scorecard เป็นเครื่องมืออัตโนมัติที่ประเมินพฤติกรรมที่สำคัญจำนวนหนึ่ง ("การตรวจสอบ") ที่เกี่ยวข้องกับความปลอดภัยของซอฟต์แวร์ และให้คะแนนการตรวจสอบแต่ละครั้งเป็น 0-10 คุณสามารถใช้คะแนนเหล่านี้เพื่อทำความเข้าใจด้านต่างๆ ที่ต้องปรับปรุงเพื่อเสริมความแข็งแกร่งให้กับมาตรการรักษาความปลอดภัยของโครงการของคุณ คุณยังสามารถประเมินความเสี่ยงที่การขึ้นต่อกันเกิดขึ้น และทำการตัดสินใจอย่างรอบรู้เกี่ยวกับการยอมรับความเสี่ยงเหล่านี้ การประเมินโซลูชันทางเลือก หรือการทำงานร่วมกับผู้ดูแลเพื่อทำการปรับปรุง
แรงบันดาลใจสำหรับโลโก้ของ Scorecard: "คุณผ่านแล้ว! All D's ... และ A!"
วิเคราะห์อัตโนมัติและตัดสินใจไว้วางใจเกี่ยวกับมาตรการรักษาความปลอดภัยของโครงการโอเพ่นซอร์ส
ใช้ข้อมูลนี้เพื่อปรับปรุงมาตรการรักษาความปลอดภัยของโครงการที่สำคัญที่โลกต้องพึ่งพาในเชิงรุก
ทำหน้าที่เป็นเครื่องมือวัดผลนโยบายที่มีอยู่
หากผู้บริโภค OSS ต้องการพฤติกรรมบางอย่างจากการพึ่งพาของพวกเขา คุณสามารถใช้ Scorecard เพื่อวัดพฤติกรรมเหล่านั้นได้ ในเวอร์ชัน V5 เราจะเห็นว่าผลลัพธ์ที่มีโครงสร้างเป็นวิธีหนึ่งในการดำเนินการนี้ หากมีการวิเคราะห์ที่รองรับ แทนที่จะอาศัยคะแนนรวมที่ X/10 หรือคะแนนที่คงไว้เป็น Y/10 ผู้บริโภค OSS อาจต้องการให้แน่ใจว่า repo ที่พวกเขาพึ่งพานั้นไม่ได้ถูกเก็บถาวร (ซึ่งครอบคลุมโดยโพรบ archived
) OpenSSF ใช้แนวทางนี้ร่วมกับเกณฑ์พื้นฐานด้านความปลอดภัยสำหรับโปรเจ็กต์ของตัวเอง
เพื่อเป็นรายงานหรือข้อกำหนดขั้นสุดท้ายที่ทุกโครงการควรปฏิบัติตาม
ตารางสรุปสถิติไม่ได้มีวัตถุประสงค์เพื่อเป็นโซลูชันขนาดเดียวที่เหมาะกับทุกคน ทุกขั้นตอนในการสร้างผลลัพธ์ของเรานั้นขึ้นอยู่กับการพิจารณา: เช็คใดบ้างที่รวมหรือไม่รวม ความสำคัญของการตรวจสอบแต่ละรายการ และวิธีการคำนวณคะแนน เช็คนั้นเป็นการวิเคราะห์พฤติกรรม มีทั้งผลบวกลวงและผลลบลวง
ไม่ว่าจะเกิดจากการบังคับใช้ ความเป็นไปได้ หรือเรื่องของความคิดเห็น สิ่งที่รวมหรือแยกออกจากผลลัพธ์ของ Scorecard นำไปสู่การถกเถียงกันมากมาย เป็นไปไม่ได้ที่จะสร้างหน้าต่างสรุปที่ทำให้ทุกคนพึงพอใจ เนื่องจากผู้ชมที่แตกต่างกันจะใส่ใจกับพฤติกรรมส่วนย่อยที่แตกต่างกัน
คะแนนรวมไม่ได้บอกคุณว่าพฤติกรรมแต่ละอย่างในที่เก็บข้อมูลเป็นอย่างไรหรือไม่ได้ทำอะไร คะแนนเช็คหลายคะแนนจะรวมกันเป็นคะแนนเดียว และมีวิธีต่างๆ มากมายในการได้คะแนนเดียวกัน คะแนนเหล่านี้เปลี่ยนแปลงเมื่อเราเพิ่มการวิเคราะห์พฤติกรรมใหม่หรือปรับแต่งสิ่งที่มีอยู่
Scorecard ถูกนำมาใช้กับโครงการหลายพันโครงการเพื่อตรวจสอบและติดตามตัวชี้วัดความปลอดภัย โครงการเด่นที่ใช้ Scorecard ได้แก่:
หากต้องการดูคะแนนสำหรับโปรเจ็กต์ที่สแกนเป็นประจำด้วย Scorecard ให้ไปที่ Webviewer คุณยังสามารถแทนที่ข้อความตัวยึด (แพลตฟอร์ม ผู้ใช้/องค์กร และชื่อพื้นที่เก็บข้อมูล) ในลิงก์เทมเพลตต่อไปนี้เพื่อสร้างลิงก์ Scorecard ที่กำหนดเองสำหรับ Repo: https://scorecard.dev/viewer/?uri=<github_or_gitlab>.com/<user_name_or_org>/<repository_name>
ตัวอย่างเช่น:
หากต้องการดูคะแนนสำหรับโปรเจ็กต์ที่ไม่รวมอยู่ใน Webviewer ให้ใช้ Scorecard CLI
เราดำเนินการสแกน Scorecard รายสัปดาห์ของโปรเจ็กต์โอเพนซอร์สที่สำคัญที่สุด 1 ล้านโปรเจ็กต์ โดยตัดสินจากการพึ่งพาโดยตรงของโปรเจ็กต์เหล่านั้น และเผยแพร่ผลลัพธ์ในชุดข้อมูลสาธารณะ BigQuery
ข้อมูลนี้มีอยู่ในชุดข้อมูล BigQuery สาธารณะ openssf:scorecardcron.scorecard-v2
ผลลัพธ์ล่าสุดมีอยู่ในมุมมอง BigQuery openssf:scorecardcron.scorecard-v2_latest
คุณค้นหาข้อมูลโดยใช้ BigQuery Explorer ได้โดยไปที่เพิ่มข้อมูล > ติดดาวโปรเจ็กต์ตามชื่อ > 'openssf' ตัวอย่างเช่น คุณอาจสนใจว่าคะแนนของโครงการเปลี่ยนแปลงไปอย่างไรเมื่อเวลาผ่านไป:
SELECT date , score FROM ` openssf.scorecardcron.scorecard-v2 ` WHERE repo . name = " github.com/ossf/scorecard " ORDER BY date ASC
คุณสามารถแยกผลลัพธ์ล่าสุดไปยังพื้นที่เก็บข้อมูล Google Cloud ในรูปแบบ JSON โดยใช้เครื่องมือ bq
:
# 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 เท่านั้น เราวางแผนที่จะขยายสิ่งเหล่านี้ในอนาคตอันใกล้เพื่อรองรับโปรเจ็กต์ที่โฮสต์บนระบบควบคุมแหล่งที่มาอื่น
วิธีที่ง่ายที่สุดในการใช้ Scorecard บนโปรเจ็กต์ GitHub ที่คุณเป็นเจ้าของคือการใช้ Scorecard GitHub Action การดำเนินการจะดำเนินการเมื่อมีการเปลี่ยนแปลงที่เก็บและออกการแจ้งเตือนที่ผู้ดูแลสามารถดูได้ในแท็บความปลอดภัยของที่เก็บ สำหรับข้อมูลเพิ่มเติม โปรดดูคำแนะนำในการติดตั้ง Scorecard GitHub Action
หากต้องการค้นหาคะแนนที่คำนวณไว้ล่วงหน้าของโปรเจ็กต์ OSS ให้ใช้ REST API
หากต้องการให้โปรเจ็กต์ของคุณพร้อมใช้งานบน REST API ให้ตั้งค่า publish_results: true
ในการตั้งค่าการดำเนินการ Scorecard GitHub
ข้อมูลที่ได้รับจาก REST API ได้รับอนุญาตภายใต้ CDLA Permissive 2.0
การเปิดใช้งาน publish_results: true
ใน Scorecard GitHub Actions ยังช่วยให้ผู้ดูแลสามารถแสดงป้าย Scorecard บนพื้นที่เก็บข้อมูลเพื่อแสดงการทำงานหนักของพวกเขาได้ ป้ายสถานะนี้ยังอัปเดตอัตโนมัติสำหรับการเปลี่ยนแปลงทุกครั้งที่ทำกับพื้นที่เก็บข้อมูล ดูรายละเอียดเพิ่มเติมเกี่ยวกับบล็อกโพสต์ OSSF นี้
หากต้องการรวมตราสัญลักษณ์ไว้ในที่เก็บของโปรเจ็กต์ของคุณ เพียงเพิ่มมาร์กดาวน์ต่อไปนี้ใน README ของคุณ:
[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/{owner}/{repo}/badge)](https://scorecard.dev/viewer/?uri=github.com/{owner}/{repo})
หากต้องการรันการสแกน Scorecard บนโปรเจ็กต์ที่คุณไม่ได้เป็นเจ้าของ ให้ใช้ตัวเลือกการติดตั้งอินเทอร์เฟซบรรทัดคำสั่ง
แพลตฟอร์ม: ปัจจุบัน Scorecard รองรับแพลตฟอร์ม OSX และ Linux หากคุณใช้ระบบปฏิบัติการ Windows คุณอาจประสบปัญหา ยินดีมีส่วนร่วมในการสนับสนุน Windows
ภาษา: คุณต้องติดตั้ง GoLang เพื่อรัน Scorecard (https://golang.org/doc/install)
scorecard
มีให้เป็นคอนเทนเนอร์นักเทียบท่า:
docker pull gcr.io/openssf/scorecard:stable
หากต้องการใช้เวอร์ชันดัชนีชี้วัดเฉพาะ (เช่น v3.2.1) ให้รัน:
docker pull gcr.io/openssf/scorecard:v3.2.1
หากต้องการติดตั้ง Scorecard แบบสแตนด์อโลน:
เยี่ยมชมหน้ารุ่นล่าสุดของเราและดาวน์โหลดไฟล์ zip ที่ถูกต้องสำหรับระบบปฏิบัติการของคุณ
เพิ่มไบนารีลงในไดเร็กทอรี GOPATH/bin
ของคุณ (ใช้ go env GOPATH
เพื่อระบุไดเร็กทอรีของคุณหากจำเป็น)
เราสร้างลายเซ็น SLSA3 โดยใช้ slsa-framework/slsa-github-generator ของ OpenSSF ในระหว่างกระบวนการเผยแพร่ วิธีตรวจสอบไบนารี่รีลีส:
attestation.intoto.jsonl
จากหน้าเผยแพร่ GitHubslsa-verifier -artifact-path < the-zip > -provenance attestation.intoto.jsonl -source github.com/ossf/scorecard -tag < the-tag >
ผู้จัดการแพ็คเกจ | การกระจายที่รองรับ | สั่งการ |
---|---|---|
ห้าม | นิกโอเอส | nix-shell -p nixpkgs.scorecard |
ตัวช่วย AUR | อาร์ค ลินุกซ์ | ใช้ตัวช่วย AUR ของคุณเพื่อติดตั้ง scorecard |
โฮมบรูว์ | macOS หรือ Linux | brew install scorecard |
GitHub กำหนดขีดจำกัดอัตรา API สำหรับคำขอที่ไม่ได้รับการรับรองความถูกต้อง เพื่อหลีกเลี่ยงข้อจำกัดเหล่านี้ คุณต้องตรวจสอบคำขอของคุณก่อนที่จะเรียกใช้ Scorecard มีสองวิธีในการตรวจสอบคำขอของคุณ: สร้างโทเค็นการเข้าถึงส่วนบุคคล GitHub หรือสร้างการติดตั้งแอป GitHub
public_repo
ตั้งค่าโทเค็นในตัวแปรสภาพแวดล้อมที่เรียกว่า GITHUB_AUTH_TOKEN
, GITHUB_TOKEN
, GH_AUTH_TOKEN
หรือ GH_TOKEN
โดยใช้คำสั่งด้านล่างตามแพลตฟอร์มของคุณ # For posix platforms, e.g. linux, mac:
export GITHUB_AUTH_TOKEN= < your access token >
# Multiple tokens can be provided separated by comma to be utilized
# in a round robin fashion.
export GITHUB_AUTH_TOKEN= < your access token 1> , < your access token 2>
# For windows:
set GITHUB_AUTH_TOKEN= < your access token >
set GITHUB_AUTH_TOKEN= < your access token 1> , < your access token 2>
หรือ
set
หรือ export
) ที่แสดงด้านบนสำหรับแพลตฟอร์มของคุณ GITHUB_APP_KEY_PATH=<path to the key file on disk>
GITHUB_APP_INSTALLATION_ID=<installation id>
GITHUB_APP_ID=<app id>
สามารถรับตัวแปรเหล่านี้ได้จากหน้าการตั้งค่านักพัฒนา GitHub
Scorecard สามารถทำงานได้โดยใช้อาร์กิวเมนต์เดียว ซึ่งเป็น URL ของ repo เป้าหมาย:
$ scorecard --repo=github.com/ossf-tests/scorecard-check-branch-protection-e2e
Starting [CII-Best-Practices]
Starting [Fuzzing]
Starting [Pinned-Dependencies]
Starting [CI-Tests]
Starting [Maintained]
Starting [Packaging]
Starting [SAST]
Starting [Dependency-Update-Tool]
Starting [Token-Permissions]
Starting [Security-Policy]
Starting [Signed-Releases]
Starting [Binary-Artifacts]
Starting [Branch-Protection]
Starting [Code-Review]
Starting [Contributors]
Starting [Vulnerabilities]
Finished [CI-Tests]
Finished [Maintained]
Finished [Packaging]
Finished [SAST]
Finished [Signed-Releases]
Finished [Binary-Artifacts]
Finished [Branch-Protection]
Finished [Code-Review]
Finished [Contributors]
Finished [Dependency-Update-Tool]
Finished [Token-Permissions]
Finished [Security-Policy]
Finished [Vulnerabilities]
Finished [CII-Best-Practices]
Finished [Fuzzing]
Finished [Pinned-Dependencies]
RESULTS
-------
Aggregate score: 7.9 / 10
Check scores:
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| SCORE | NAME | REASON | DOCUMENTATION/REMEDIATION |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| 10 / 10 | Binary-Artifacts | no binaries found in the repo | github.com/ossf/scorecard/blob/main/docs/checks.md#binary-artifacts |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| 9 / 10 | Branch-Protection | branch protection is not | github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection |
| | | maximal on development and all | |
| | | release branches | |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| ? | CI-Tests | no pull request found | github.com/ossf/scorecard/blob/main/docs/checks.md#ci-tests |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| 0 / 10 | CII-Best-Practices | no badge found | github.com/ossf/scorecard/blob/main/docs/checks.md#cii-best-practices |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| 10 / 10 | Code-Review | branch protection for default | github.com/ossf/scorecard/blob/main/docs/checks.md#code-review |
| | | branch is enabled | |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| 0 / 10 | Contributors | 0 different companies found -- | github.com/ossf/scorecard/blob/main/docs/checks.md#contributors |
| | | score normalized to 0 | |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| 0 / 10 | Dependency-Update-Tool | no update tool detected | github.com/ossf/scorecard/blob/main/docs/checks.md#dependency-update-tool |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| 0 / 10 | Fuzzing | project is not fuzzed in | github.com/ossf/scorecard/blob/main/docs/checks.md#fuzzing |
| | | OSS-Fuzz | |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| 1 / 10 | Maintained | 2 commit(s) found in the last | github.com/ossf/scorecard/blob/main/docs/checks.md#maintained |
| | | 90 days -- score normalized to | |
| | | 1 | |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| ? | Packaging | no published package detected | github.com/ossf/scorecard/blob/main/docs/checks.md#packaging |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| 8 / 10 | Pinned-Dependencies | unpinned dependencies detected | github.com/ossf/scorecard/blob/main/docs/checks.md#pinned-dependencies |
| | | -- score normalized to 8 | |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| 0 / 10 | SAST | no SAST tool detected | github.com/ossf/scorecard/blob/main/docs/checks.md#sast |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| 0 / 10 | Security-Policy | security policy file not | github.com/ossf/scorecard/blob/main/docs/checks.md#security-policy |
| | | detected | |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| ? | Signed-Releases | no releases found | github.com/ossf/scorecard/blob/main/docs/checks.md#signed-releases |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| 10 / 10 | Token-Permissions | tokens are read-only in GitHub | github.com/ossf/scorecard/blob/main/docs/checks.md#token-permissions |
| | | workflows | |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
| 10 / 10 | Vulnerabilities | no vulnerabilities detected | github.com/ossf/scorecard/blob/main/docs/checks.md#vulnerabilities |
| --------- | ------------------------ | -------------------------------- | --------------------------------------------------------------------------- |
ต้องตั้งค่า GITHUB_AUTH_TOKEN
ให้เป็นโทเค็นที่ถูกต้อง
docker run -e GITHUB_AUTH_TOKEN=token gcr.io/openssf/scorecard:stable --show-details --repo=https://github.com/ossf/scorecard
หากต้องการใช้เวอร์ชันดัชนีชี้วัดเฉพาะ (เช่น v3.2.1) ให้รัน:
docker run -e GITHUB_AUTH_TOKEN=token gcr.io/openssf/scorecard:v3.2.1 --show-details --repo=https://github.com/ossf/scorecard
สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับสาเหตุที่การตรวจสอบล้มเหลว ให้ใช้ตัวเลือก --show-details
:
./scorecard --repo=github.com/ossf-tests/scorecard-check-branch-protection-e2e --checks Branch-Protection --show-details
Starting [Pinned-Dependencies]
Finished [Pinned-Dependencies]
RESULTS
-------
|---------|------------------------|--------------------------------|--------------------------------|---------------------------------------------------------------------------|
| SCORE | NAME | REASON | DETAILS | DOCUMENTATION/REMEDIATION |
|---------|------------------------|--------------------------------|--------------------------------|---------------------------------------------------------------------------|
| 9 / 10 | Branch-Protection | branch protection is not | Info: 'force pushes' disabled | github.com/ossf/scorecard/blob/main/docs/checks.md#branch-protection |
| | | maximal on development and all | on branch 'main' Info: 'allow | |
| | | release branches | deletion' disabled on branch | |
| | | | 'main' Info: linear history | |
| | | | enabled on branch 'main' Info: | |
| | | | strict status check enabled | |
| | | | on branch 'main' Warn: status | |
| | | | checks for merging have no | |
| | | | specific status to check on | |
| | | | branch 'main' Info: number | |
| | | | of required reviewers is 2 | |
| | | | on branch 'main' Info: Stale | |
| | | | review dismissal enabled on | |
| | | | branch 'main' Info: Owner | |
| | | | review required on branch | |
| | | | 'main' Info: 'administrator' | |
| | | | PRs need reviews before being | |
| | | | merged on branch 'main' | |
|---------|------------------------|--------------------------------|--------------------------------|---------------------------------------------------------------------------|
คำอธิบายประกอบของผู้ดูแล ช่วยให้ผู้ดูแลเพิ่มบริบทเพื่อแสดงควบคู่ไปกับผลการตรวจสอบดัชนีชี้วัด คำอธิบายประกอบสามารถให้ข้อมูลเพิ่มเติมแก่ผู้ใช้เมื่อ Scorecard มีการประเมินแนวทางปฏิบัติด้านความปลอดภัยของโครงการที่ไม่สมบูรณ์ หากต้องการดูคำอธิบายประกอบของผู้ดูแลสำหรับการตรวจสอบแต่ละรายการ ให้ใช้ตัวเลือก --show-annotations
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับคำอธิบายประกอบที่มีอยู่หรือวิธีสร้างคำอธิบายประกอบ โปรดดูเอกสารการกำหนดค่า
หากต้องการเรียกใช้ Scorecard บนที่เก็บ GitLab คุณต้องสร้างโทเค็นการเข้าถึง GitLab โดยมีสิทธิ์ดังต่อไปนี้:
read_api
read_user
read_repository
คุณสามารถเรียกใช้ Scorecard บนที่เก็บ GitLab ได้โดยการตั้งค่าตัวแปรสภาพแวดล้อม GITLAB_AUTH_TOKEN
:
export GITLAB_AUTH_TOKEN=glpat-xxxx
scorecard --repo gitlab.com/ < org > / < project > / < subproject >
สำหรับตัวอย่างการใช้ Scorecard ใน GitLab CI/CD ดูที่นี่
แม้ว่าเราจะมุ่งเน้นไปที่การสนับสนุน GitLab.com แต่ Scorecard ยังทำงานร่วมกับการติดตั้ง GitLab ที่โฮสต์เองอีกด้วย หากแพลตฟอร์มของคุณโฮสต์อยู่ที่โดเมนย่อย (เช่น gitlab.foo.com
) Scorecard ควรใช้งานได้ทันที หากแพลตฟอร์มของคุณโฮสต์อยู่ที่ตัวบุ้งบางตัว (เช่น foo.com/bar/
) คุณจะต้องตั้งค่าตัวแปรสภาพแวดล้อม GL_HOST
export GITLAB_AUTH_TOKEN=glpat-xxxx
export GL_HOST=foo.com/bar
scorecard --repo foo.com/bar/ < org > / < project >
หากต้องการใช้โฮสต์ GitHub Enterprise github.corp.com
ให้ใช้ตัวแปรสภาพแวดล้อม GH_HOST
# Set the GitHub Enterprise host without https prefix or slash with relevant authentication token
export GH_HOST=github.corp.com
export GITHUB_AUTH_TOKEN=token
scorecard --repo=github.corp.com/org/repo
# OR without github host url
scorecard --repo=org/repo
สำหรับโปรเจ็กต์ในระบบนิเวศ --npm
, --pypi
, --rubygems
หรือ --nuget
คุณมีตัวเลือกในการรัน Scorecard โดยใช้ตัวจัดการแพ็คเกจ ระบุชื่อแพ็กเกจเพื่อดำเนินการตรวจสอบซอร์สโค้ด GitHub ที่เกี่ยวข้อง
ตัวอย่างเช่น --npm=angular
หากต้องการรันเฉพาะเช็คเฉพาะ ให้เพิ่มอาร์กิวเมนต์ --checks
พร้อมรายการชื่อเช็ค
ตัวอย่างเช่น --checks=CI-Tests,Code-Review
รูปแบบที่รองรับในปัจจุบันคือ default
(ข้อความ) และ json
สิ่งเหล่านี้อาจถูกระบุด้วยแฟล็ก --format
ตัวอย่างเช่น --format=json
การตรวจสอบต่อไปนี้ทั้งหมดจะรันกับโปรเจ็กต์เป้าหมายตามค่าเริ่มต้น:
ชื่อ | คำอธิบาย | ระดับความเสี่ยง | ต้องใช้โทเค็น | การสนับสนุน GitLab | บันทึก |
---|---|---|---|---|---|
ไบนารี-สิ่งประดิษฐ์ | โปรเจ็กต์ไม่มีไบนารีที่เช็คอินหรือไม่ | สูง | PAT, GITHUB_TOKEN | รองรับ | |
การป้องกันสาขา | โครงการใช้ Branch Protection หรือไม่ ? | สูง | PAT ( repo หรือ repo> public_repo ), GITHUB_TOKEN | รองรับ (ดูหมายเหตุ) | การตั้งค่าบางอย่างรองรับเฉพาะผู้ดูแล PAT เท่านั้น |
การทดสอบ CI | โปรเจ็กต์ทำการทดสอบใน CI เช่น GitHub Actions, Prow หรือไม่ | ต่ำ | PAT, GITHUB_TOKEN | รองรับ | |
CII-แนวปฏิบัติที่ดีที่สุด | โปรเจ็กต์ได้รับป้าย Best Practices ของ OpenSSF (เดิมคือ CII) ในระดับผ่าน ระดับเงิน หรือระดับทองหรือไม่ | ต่ำ | PAT, GITHUB_TOKEN | กำลังตรวจสอบ | |
การตรวจสอบโค้ด | มีการทบทวนรหัสฝึกปฏิบัติของโครงการก่อนที่จะรวมรหัสหรือไม่ | สูง | PAT, GITHUB_TOKEN | กำลังตรวจสอบ | |
ผู้ร่วมให้ข้อมูล | โครงการนี้มีผู้ร่วมให้ข้อมูลจากองค์กรที่แตกต่างกันอย่างน้อยสององค์กรหรือไม่ | ต่ำ | PAT, GITHUB_TOKEN | กำลังตรวจสอบ | |
อันตราย-ขั้นตอนการทำงาน | โปรเจ็กต์หลีกเลี่ยงรูปแบบการเข้ารหัสที่เป็นอันตรายในเวิร์กโฟลว์ GitHub Action หรือไม่ | วิกฤต | PAT, GITHUB_TOKEN | ไม่รองรับ | |
เครื่องมืออัปเดตการพึ่งพา | โปรเจ็กต์ใช้เครื่องมือเพื่อช่วยอัปเดตการขึ้นต่อกันหรือไม่ | สูง | PAT, GITHUB_TOKEN | ไม่รองรับ | |
คลุมเครือ | โปรเจ็กต์ใช้เครื่องมือ fuzzing เช่น OSS-Fuzz, QuickCheck หรือ fast-check หรือไม่ | ปานกลาง | PAT, GITHUB_TOKEN | กำลังตรวจสอบ | |
ใบอนุญาต | โครงการประกาศใบอนุญาตหรือไม่? | ต่ำ | PAT, GITHUB_TOKEN | กำลังตรวจสอบ | |
บำรุงรักษา | โครงการมีอายุอย่างน้อย 90 วันและได้รับการบำรุงรักษาหรือไม่ | สูง | PAT, GITHUB_TOKEN | กำลังตรวจสอบ | |
ปักหมุด-การพึ่งพา | โครงการประกาศและปักหมุดการพึ่งพาหรือไม่ | ปานกลาง | PAT, GITHUB_TOKEN | กำลังตรวจสอบ | |
บรรจุภัณฑ์ | โครงการสร้างและเผยแพร่แพ็คเกจอย่างเป็นทางการจาก CI/CD เช่น GitHub Publishing หรือไม่ | ปานกลาง | PAT, GITHUB_TOKEN | กำลังตรวจสอบ | |
ศอ | โปรเจ็กต์ใช้เครื่องมือวิเคราะห์โค้ดแบบคงที่ เช่น CodeQL, LGTM (เลิกใช้แล้ว), SonarCloud หรือไม่ | ปานกลาง | PAT, GITHUB_TOKEN | ไม่รองรับ | |
นโยบายความปลอดภัย | โครงการมีนโยบายความปลอดภัยหรือไม่? | ปานกลาง | PAT, GITHUB_TOKEN | กำลังตรวจสอบ | |
ลงนาม-เผยแพร่ | โปรเจ็กต์นี้ลงนามในการเปิดตัวแบบเข้ารหัสหรือไม่ | สูง | PAT, GITHUB_TOKEN | กำลังตรวจสอบ | |
โทเค็น-สิทธิ์ | โปรเจ็กต์ประกาศโทเค็นเวิร์กโฟลว์ GitHub เป็นแบบอ่านอย่างเดียวหรือไม่ | สูง | PAT, GITHUB_TOKEN | ไม่รองรับ | |
ช่องโหว่ | โครงการมีช่องโหว่ที่ไม่ได้รับการแก้ไขหรือไม่? ใช้บริการ OSV | สูง | PAT, GITHUB_TOKEN | กำลังตรวจสอบ | |
เว็บฮุค | webhook ที่กำหนดไว้ในพื้นที่เก็บข้อมูลมีโทเค็นที่กำหนดค่าเพื่อตรวจสอบสิทธิ์ที่มาของคำขอหรือไม่ | วิกฤต | ผู้ดูแล PAT ( admin: repo_hook หรือ admin> read:repo_hook doc | การทดลอง |
หากต้องการดูข้อมูลโดยละเอียดเกี่ยวกับเช็คแต่ละรายการ เกณฑ์การให้คะแนน และขั้นตอนการแก้ไข โปรดดูหน้าเอกสารประกอบของเช็ค
สำหรับคำแนะนำในการตรวจสอบที่คุณควรใช้เมื่อเริ่มต้น โปรดดูคู่มือสำหรับผู้เริ่มต้นในการตรวจสอบบัตรคะแนน
การตรวจสอบสิทธิ์แบบสองปัจจัย (2FA) เพิ่มการรักษาความปลอดภัยอีกชั้นหนึ่งเมื่อเข้าสู่ระบบเว็บไซต์หรือแอป 2FA ปกป้องบัญชีของคุณหากรหัสผ่านของคุณถูกละเมิดโดยกำหนดให้มีการตรวจสอบสิทธิ์รูปแบบที่สอง เช่น รหัสที่ส่งทาง SMS หรือแอปตรวจสอบสิทธิ์ หรือการแตะคีย์ความปลอดภัยทางกายภาพ
เราขอแนะนำอย่างยิ่งให้คุณเปิดใช้งาน 2FA ในบัญชีสำคัญใดๆ ที่สามารถใช้งานได้ 2FA ไม่ใช่การตรวจสอบ Scorecard เนื่องจาก GitHub และ GitLab ไม่ได้เปิดเผยข้อมูลเกี่ยวกับบัญชีผู้ใช้ต่อสาธารณะ อาจเป็นไปได้ว่าข้อมูลนี้ควรยังคงเป็นส่วนตัวเสมอ เนื่องจากบัญชีที่ไม่มี 2FA จึงเสี่ยงต่อการถูกโจมตี
แม้ว่าจะไม่ใช่การตรวจสอบอย่างเป็นทางการ แต่เราขอแนะนำให้ผู้ดูแลโครงการทั้งหมดเปิดใช้ 2FA เพื่อปกป้องโครงการของตนจากการประนีประนอม
ทำตามขั้นตอนที่อธิบายไว้ในการกำหนดค่าการรับรองความถูกต้องด้วยสองปัจจัย
หากเป็นไปได้ ให้ใช้อย่างใดอย่างหนึ่ง:
เป็นตัวเลือกสุดท้าย ให้ใช้ SMS ระวัง: 2FA ที่ใช้ SMS เสี่ยงต่อการถูกโจมตีด้วยการสลับ SIM
เช็คแต่ละรายการจะส่งกลับคะแนน 0 ถึง 10 โดย 10 แสดงถึงคะแนนที่ดีที่สุดที่เป็นไปได้ หน้าต่างสรุปยังสร้างคะแนนรวม ซึ่งเป็นค่าเฉลี่ยตามน้ำหนักของเช็คแต่ละรายการที่ถ่วงน้ำหนักตามความเสี่ยง
ดูรายการการตรวจสอบ Scorecard ปัจจุบันสำหรับระดับความเสี่ยงของการตรวจสอบแต่ละรายการ
หากคุณมีสิ่งที่ดูเหมือนเป็นจุดบกพร่อง โปรดใช้ระบบติดตามปัญหาของ GitHub ก่อนที่คุณจะยื่นเรื่อง โปรดค้นหาปัญหาที่มีอยู่เพื่อดูว่าปัญหาของคุณครอบคลุมอยู่แล้วหรือไม่
ก่อนที่จะมีส่วนร่วม โปรดปฏิบัติตามหลักจรรยาบรรณของเรา
ดูเอกสารประกอบสำหรับคำแนะนำเกี่ยวกับวิธีการมีส่วนร่วมในโครงการ
หากคุณต้องการเพิ่มเช็ค โปรดดูคำแนะนำที่นี่
หากคุณต้องการมีส่วนร่วมในชุมชน Scorecard หรือมีแนวคิดที่ต้องการพูดคุย เราจะหารือเกี่ยวกับโครงการนี้ในการประชุมคณะทำงาน OSSF Best Practices
สิ่งประดิษฐ์ | ลิงค์ |
---|---|
ฟอรัม Scorecard Dev | ossf-ดัชนีชี้วัด-dev@ |
ฟอรัมประกาศ Scorecard | ossf-scorecard-ประกาศ@ |
การประชุมชุมชน VC | ลิงค์การประชุม Zoom |
ปฏิทินการประชุมชุมชน | เป็นมิตรกับ APAC ทุกสองสัปดาห์ในวันพฤหัสบดี เวลา 13:00-14:00 น. แปซิฟิก (ปฏิทินสาธารณะ OSSF) แฮงเอาท์วิดีโอ: ซูม LFX เป็นมิตรกับ EMEA ทุกวันจันทร์ที่ 4 เวลา 7:00-8:00 น. แปซิฟิก (ปฏิทินสาธารณะ OSSF) แฮงเอาท์วิดีโอ: ซูม LFX |
บันทึกการประชุม | หมายเหตุ |
ช่องสแลค | #ดัชนีชี้วัด |
ผู้ดูแล แสดงอยู่ในไฟล์ CODEOWNERS
หากต้องการรายงานปัญหาด้านความปลอดภัย โปรดปฏิบัติตามคำแนะนำที่นี่
เป็นมิตรกับ APAC ทุกสองสัปดาห์ในวันพฤหัสบดี เวลา 13:00-14:00 น. แปซิฟิก (ปฏิทินสาธารณะ OSSF)
แฮงเอาท์วิดีโอ: ซูม LFX
เป็นมิตรกับ EMEA ทุกวันจันทร์ที่ 4 เวลา 7:00-8:00 น. แปซิฟิก (ปฏิทินสาธารณะ OSSF)
แฮงเอาท์วิดีโอ: ซูม LFX
คุณสามารถดูวาระการประชุมและบันทึกการประชุมได้ที่นี่
ดูคำถามที่พบบ่อยเพื่อดูคำตอบของคำถามที่พบบ่อยเกี่ยวกับ Scorecard