OpenSSF Scorecard
OpenSSF Scorecard er et bransjestandard sett med automatiserte sjekker av sikkerhetsnivået i et repository med åpen kildekode. fremforge kjører det mot hvert repository i organisasjonen din etter en ukentlig tidsplan og viser resultatet som en kolonne på /<org>/_admin/repos-overview.
Sjekkene
Scorecard-sjekkene dekker byggesikkerhet, sårbarhetshygiene og prosjektets modenhet. De viktigste:
- Branch-Protection: er standardbranchen beskyttet med påkrevde gjennomganger og statussjekker?
- Code-Review: hvor stor andel av de siste mergene hadde en kodegjennomgang?
- Pinned-Dependencies: er CI-avhengigheter låst til bestemte versjoner eller SHA-er?
- Token-Permissions: bruker CI tokener med minst mulig tilgang?
- Signed-Releases: er utgivelsesartefakter kryptografisk signert?
- SAST: kjører prosjektet en statisk analysator i CI?
- Sårbarheter: inneholder avhengighetstreet kjente CVE-er?
- Maintained: har repositoryet nylig aktivitet i commits eller issues?
Hver sjekk gir en poengsum fra 0 til 10. Den samlede poengsummen er det vektede gjennomsnittet. En perfekt 10 er sjelden; «bra» ligger på 7–9.
Slik kjører fremforge det
Scorecard er ikke en CI-workflow per repository. Det kjører ukentlig på isolert plattforminfrastruktur: ingen workflow-fil havner i repositoryene dine, og du bruker ingen runner-minutter på det. Mekanismen:
- Én gang i uken setter fremforge hver aktiv kunde i kø for en skanning. Kunder som har en kjøring i gang, hoppes over.
- En skanning drives av en skrivebeskyttet bot per kunde, som kan lese repositoryene dine, men ikke skrive til dem.
- Skanningen lister kundens repositoryer og sammenligner hvert repositorys nåværende HEAD på standardbranchen med HEAD som ble registrert ved forrige skanning. Repositoryer der HEAD ikke har flyttet seg, hoppes over: poengsummen kan ikke ha endret seg, så det er ingenting å beregne på nytt.
- Hvert endret repository klones grunt inn i en midlertidig arbeidskatalog på isolert plattforminfrastruktur,
scorecard --localkjøres mot den lokale utsjekkingen, og den resulterende JSON-en med poengsummen lagres (inkludert den nye HEAD-referansen). - Kjøringer som står fast fordi en worker krasjet, settes tilbake til feilet tilstand, slik at kunden settes i kø igjen ved neste ukentlige kjøring.
fremforge lagrer resultatet per (tenant, repo) og viser den samlede poengsummen som en kolonne på Repos-siden (/<org>/_admin/repos-overview). Klikk på en rad for å se detaljer per sjekk.
Inntaks-API-et /scorecard/results finnes fortsatt for push fra eksterne kilder eller workflower, men det er ikke lenger standardveien: den ukentlige skanningen på plattformsiden ovenfor er det.
Slik tolker du poengsummen
Poengsummen er et retningssignal, ikke en samsvarssperre. Et repository med poengsum 6,5 som inneholder et vedlikeholdt bibliotek med branchbeskyttelse og SAST, er i mye bedre stand enn et repository med poengsum 8 som tilfeldigvis gjør det godt på kosmetiske sjekker.
Vi anbefaler ikke å koble «Scorecard-poengsum < X» til en regel som blokkerer merge. Det riktige stedet for en slik sperre er:
- Branch-Protection feiler → rett det på
/<org>/_admin/security/policies/repository-rules#org-baseline(allerede et separat signal). - SAST feiler → sjekk
/<org>/_admin/code-security(allerede et separat signal).
Bruk Scorecard til å se på forskjellen mellom like repositoryer: hvis acme/api får 8,5 og acme/web får 6,5, hvor ligger forskjellen, og er den tilsiktet?
Hvor skanningen kjører – om datalokalisering
Selve scorecard-programmet er åpen kildekode (Apache-2.0). Skanningen kjører på isolert, nettverksavgrenset plattforminfrastruktur hos fremforge (T Cloud Public, eu-de), ikke i CI-runnerne dine. Den drives av en skrivebeskyttet bot per kunde, som kan lese repositoryene dine, men ikke skrive til dem.
Hva dette betyr for dataene dine:
- Klonen er midlertidig. Skanningen kloner hvert endrede repository grunt inn i en midlertidig arbeidskatalog, kjører
scorecard --localmot den lokale utsjekkingen og sletter arbeidskatalogen når kjøringen er ferdig. Kildekoden lagres aldri varig og forlater aldri plattformen ut på det offentlige internettet: boten henter fra kundens egen Forgejo over det interne nettverket, og scorecard kjører med--local(ingen utgående kall til API-er i GitHub-stil for sjekkene vi kjører). - Bare JSON-en med sjekkresultatene beholdes. Det vi lagrer per
(tenant, repo), er poengsummen per sjekk og HEAD-referansen som ble skannet: ingen kildekode, ikke noe filinnhold, ingen utdrag fra commits. - Det blir i
eu-de. Både klonen og skanningen kjører inne på den EU-baserte plattformen, i tråd med fremforges linje om ingen amerikanske underdatabehandlere.
Dette er en endring fra den tidligere modellen, der scorecard kjørte som en workflow i dine egne CI-runnere. Skanningen kjører nå på fremforges infrastruktur; egenskapene for datalokalisering og den skrivebeskyttede boten ovenfor er hvordan vi holder den grensen stram.
Se også
- Branchbeskyttelse: styrer poengsummen for Branch-Protection.
- SBOM-er: styrer poengsummene for Dependencies og Vulnerabilities.