OpenSSF Scorecard
OpenSSF Scorecard är en branschstandard med automatiska kontroller av säkerhetsläget i ett repo med öppen källkod. fremforge kör den mot varje repo i din organisation enligt ett veckoschema och visar resultatet som en kolumn på /<org>/_admin/repos-overview.
Kontrollerna
Scorecards kontroller täcker byggsäkerhet, hantering av sårbarheter och projektets mognad. De viktigaste:
- Branch-Protection: är standard-branchen skyddad med obligatoriska granskningar och statuskontroller?
- Code-Review: hur stor andel av de senaste merges hade en kodgranskning?
- Pinned-Dependencies: är CI-beroenden låsta till specifika versioner eller SHA:er?
- Token-Permissions: använder CI tokens med minsta möjliga behörighet?
- Signed-Releases: är release-artefakter kryptografiskt signerade?
- SAST: kör projektet en statisk analysator i CI?
- Vulnerabilities: innehåller beroendeträdet kända CVE:er?
- Maintained: har repot nyligen haft aktivitet i form av commits eller issues?
Varje kontroll ger ett betyg från 0 till 10. Det sammanlagda betyget är det viktade medelvärdet. En perfekt 10:a är ovanlig; “bra” ligger i intervallet 7–9.
Hur fremforge kör den
Scorecard är inte ett CI-arbetsflöde per repo. Den körs varje vecka på isolerad plattformsinfrastruktur: ingen arbetsflödesfil hamnar i dina repon, och du förbrukar inga runner-minuter på den. Så här fungerar det:
- En gång i veckan köar fremforge varje aktiv tenant för en skanning. Tenants med en pågående körning hoppas över.
- En skanning drivs av en skrivskyddad bot per tenant som kan läsa dina repon men inte skriva till dem.
- Skanningen listar tenantens repon och jämför varje repos nuvarande HEAD på standard-branchen med det HEAD som registrerades vid förra skanningen. Repon vars HEAD inte har flyttats hoppas över: betyget kan inte ha ändrats, så det finns inget att räkna om.
- Varje ändrat repo klonas grunt till en tillfällig arbetskatalog på isolerad plattformsinfrastruktur, binären
scorecard --localkörs mot den lokala utcheckningen och den resulterande JSON:en med betyget sparas (inklusive den nya HEAD-referensen). - Körningar som fastnat för att en worker kraschat återställs till ett misslyckat läge, så att tenanten köas igen vid nästa veckokörning.
fremforge sparar resultatet per (tenant, repo) och visar det sammanlagda betyget som en kolumn på sidan Repon (/<org>/_admin/repos-overview). Klicka på en rad för att se detaljerna per kontroll.
Inmatnings-API:et /scorecard/results finns kvar för push från externa källor eller arbetsflöden, men det är inte längre standardvägen: det är veckoskanningen på plattformssidan ovan.
Tolka betyget
Betyget är en riktningssignal, inte en spärr för efterlevnad. Ett repo med betyget 6,5 som är ett underhållet bibliotek med branch-skydd och SAST är i mycket bättre skick än ett repo med betyget 8 som råkar få bra resultat på kosmetiska kontroller.
Vi rekommenderar inte att du kopplar “Scorecard-betyg < X” till någon regel som blockerar merges. Rätt ställe för den spärren är:
- Branch-Protection misslyckas → åtgärda det på
/<org>/_admin/security/policies/repository-rules#org-baseline(redan en separat signal). - SAST misslyckas → kontrollera
/<org>/_admin/code-security(redan en separat signal).
Använd Scorecard för att titta på skillnaden mellan liknande repon: om acme/api får 8,5 och acme/web får 6,5, var ligger skillnaden och är den avsiktlig?
Var skanningen körs: om datalagring
Själva scorecard-binären är öppen källkod (Apache-2.0). Skanningen körs på isolerad, nätverksavgränsad plattformsinfrastruktur hos fremforge (T Cloud Public, eu-de), inte i dina CI-runners. Den drivs av en skrivskyddad bot per tenant som kan läsa dina repon men inte skriva till dem.
Vad det betyder för dina data:
- Klonen är tillfällig. Skanningen klonar varje ändrat repo grunt till en tillfällig arbetskatalog, kör
scorecard --localmot den lokala utcheckningen och tar bort arbetskatalogen när körningen är klar. Källkoden sparas aldrig i beständig lagring och lämnar aldrig plattformen ut mot det publika internet: boten hämtar från din tenants egen Forgejo över det interna nätverket, och scorecard-binären körs med--local(inga utgående anrop till API:er i GitHub-stil för de kontroller vi kör). - Bara JSON:en med kontrollresultaten sparas. Det vi sparar per
(tenant, repo)är betygen per kontroll plus den skannade HEAD-referensen: ingen källkod, inget filinnehåll, inga utdrag ur commits. - Allt stannar i
eu-de. Både kloningen och skanningen körs i den plattform som finns i EU, i linje med fremforges hållning att inte använda underbiträden i USA.
Det här är en förändring jämfört med den tidigare modellen, där scorecard kördes som ett arbetsflöde i dina egna CI-runners. Skanningen körs nu på fremforges infrastruktur; egenskaperna ovan om datalagring och den skrivskyddade boten är hur vi håller den gränsen tät.
Se även
- Branch-skydd: styr betyget för Branch-Protection.
- SBOM:er: styr betygen för Dependencies och Vulnerabilities.