Skip to content
Apothem
Keamanan

Postur OpenSSF Scorecard

Target OpenSSF Scorecard milik Apothem dan permukaan bukti yang digunakan untuk menjaga skor terus membaik.

Apothem membidik skor OpenSSF Scorecard maksimum sambil menjaga fasad publik tetap jujur tentang apa yang dapat dan tidak dapat disimpulkan Scorecard dari repositori baru dengan pemelihara tunggal. Dokumen ini mencantumkan setiap pemeriksaan, permukaan bukti yang mendukungnya, dan kontrol yang menjaga postur tetap mutakhir.

Skor aktual ada di penampil Scorecard; lencananya ada di header README.

Matriks bukti per pemeriksaan

PemeriksaanPermukaan buktiCatatan
Binary-Artifactsbinary-artifacts-sweep.mdNol biner yang dapat dieksekusi dilacak di sumber; arsip distribusi yang dihasilkan tetap berada di dist/.
Branch-Protectionbranch-protection-ruleset.mdmain dilindungi sebelum promosi rilis publik; force-push dan penghapusan diblokir setelah commit rilis baru mendarat.
CI-Tests.github/workflows/ci.ymlMatriks Pytest, ruff, mypy, Trivy, build dokumentasi, dan pemeriksaan smoke pengemasan.
CII-Best-PracticesPendaftaran OpenSSF Best PracticesMemerlukan pendaftaran di sisi pemelihara pada situs OpenSSF Best Practices; ini tidak dapat diselesaikan hanya dengan berkas repositori.
Code-ReviewProteksi branch + CODEOWNERSPull request diwajibkan untuk main bagi semua orang kecuali admin repositori, dan proteksi branch mensyaratkan 0 tinjauan yang menyetujui selama proyek memiliki satu pemelihara (lihat branch-protection-ruleset.md); riwayat Scorecard tetap terbatas hingga ada PR yang ditinjau.
ContributorsAUTHORSProyek baru dengan satu pemelihara tidak dapat membuat-buat riwayat kontribusi multi-organisasi; ini membaik secara alami seiring bergabungnya kontributor.
Dangerous-WorkflowAudit alur kerjaTidak ada pull_request_target; Actions dipatok per SHA dan dicakup dengan izin eksplisit.
Dependency-Update-Tool.github/dependabot.ymlDependabot mengusulkan pembaruan mingguan yang dikelompokkan untuk pin GitHub Actions, situs web, lockfile pengemas vsce, pip CI yang dikunci-hash, dan hook pre-commit, serta pembaruan bulanan untuk lockfile channel-smoke; pembaruan keamanan Dependabot mencakup setiap manifest yang terdeteksi, kecuali kumpulan lengkap dependensi dan perkakas CI di scripts/ci/, yang dibuat ulang oleh scripts/dev/refresh_ci_locks.py ketika sebuah peringatan menyebut paket yang terkunci. .gitattributes mempertahankan satu berkas ini di arsip sumber GitHub, yang dibaca oleh pemindaian dalam mode arsip bawaan action; alur kerja Scorecard berjalan dalam mode git dan membacanya dari klon.
Fuzzingtests/property/Tes properti Hypothesis menguji invarian parser dan frontmatter; Scorecard upstream mungkin tidak mengakui Hypothesis sebagai integrasi fuzzer.
LicenseLICENSELisensi MIT di akar repositori.
MaintainedRiwayat GitCommit rilis saat ini dan irama alur kerja yang aktif menunjukkan pemeliharaan; repositori yang sangat baru mungkin menerima peringatan usia.
Packaging.github/workflows/Alur kerja rilis, Pages, dan npmjs.com yang menghasilkan sdist, wheel, SBOM, provenans SLSA, dan tanda tangan Sigstore.
Pinned-DependenciesAudit alur kerja + persyaratan yang dikunci-hashActions dipatok per SHA; perkakas rilis, peningkatan pip CI, dependensi proyek dan tes CI, serta perkakas CI (ruff, bandit, pip-audit, pip-licenses, pre-commit) dipasang dengan --require-hashes. Pemasangan proyek, tes, dan perkakas membaca sembilan lockfile di scripts/ci/; peningkatan pip dan perkakas rilis masing-masing membaca lockfile sendiri, dan paket itu sendiri dipasang dengan --no-deps -e ..
SAST.github/workflows/codeql.ymlKueri CodeQL security-extended di seluruh Python dan Actions.
Security-PolicySECURITY.mdKebijakan pengungkapan terkoordinasi, matriks versi yang didukung, dan lini masa respons.
Signed-Releases.github/workflows/release.ymlTanda tangan keyless Sigstore, provenans SLSA, SBOM, checksum, dan artefak rilis.
Token-PermissionsAudit alur kerjaAlur kerja secara default menggunakan izin baca-saja; cakupan tulis bersifat lokal-job dan terikat pada operasi deployment/paket.
Vulnerabilities.github/workflows/pip-audit.yml + .github/workflows/dependency-review.ymlPemindaian kerentanan mingguan dan pemindaian CI dengan unggahan SARIF; gerbang dependency-review memblokir pull request yang memperkenalkan dependensi yang rentan atau berlisensi tidak diizinkan. Pemeriksaan ini sendiri mencari di OSV dependensi yang ditemukannya di manifest repositori, sehingga pip-audit.yml juga mengkueri OSV (pip-audit -s osv) dan temuan di sana cocok dengan temuan pemeriksaan.

Interpretasi skor

Scorecard menilai setiap pemeriksaan pada skala 0-10 dan skor keseluruhan adalah rata-rata tertimbang. Kontrol yang bergantung pada riwayat repositori, pendaftaran pihak ketiga, atau keragaman kontributor dilacak secara eksplisit alih-alih diklaim berlebihan. Penyimpangan pada pemeriksaan apa pun yang dikendalikan berkas memicu remediasi segera.

Alur kerja Scorecard menjalankan action-nya dengan file_mode: git, sehingga Scorecard membaca klon repositori. Arsip sumber tidak menyertakan .github/ (export-ignore di .gitattributes). Karena itu, dalam mode arsip bawaan action, alur kerja akan tersembunyi dari Dangerous-Workflow, Token-Permissions, Pinned-Dependencies, dan Packaging.

Pinned-Dependencies sengaja tetap di bawah 10, dengan dua alasan. Generator SLSA dirujuk dengan tag rilisnya, satu-satunya pengecualian dari patokan SHA, karena provenansnya ditambatkan pada tag tersebut. Alur kerja evals memasang CLI Claude Code dengan npm install --global pada versi yang dipilih di setiap eksekusi. Setiap pemasangan Python yang dipindai Scorecard di alur kerja dikunci-hash, atau merupakan pemasangan lokal paket itu sendiri atau wheel yang dibangun dalam eksekusi yang sama.

Irama penyegaran

  • Per push: alur kerja Scorecard dijalankan ulang pada setiap push ke main.
  • Mingguan: Senin 02:30 UTC — menangkap perubahan metodologi penilaian upstream + kerentanan baru yang diungkapkan terhadap dependensi terpatok yang ada.
  • Per rilis: sebelum promosi publik, pemelihara memverifikasi permukaan penampil Scorecard yang aktif dan mencatat batasan keadaan platform apa pun.

Referensi

On this page