SBOM-generering, registrert under bygget
CRACI er et verktøy for SBOM-generering som registrerer hva hvert GitHub Actions-bygg faktisk hentet inn, i stedet for å skanne filer etterpå. Hver SBOM forteller hvor fullstendig den er.
Kort fortalt: Kjør GitHub Actions-jobbene dine på CRACI-runnere, så får hver jobb en SBOM over pakkene den hentet, inkludert transitive avhengigheter og pakker gjenopprettet fra CI-cacher, eksportert i CycloneDX eller SPDX. Hver SBOM har en fullstendighetsstatus og overvåkes for nye sårbarheter etter utgivelse. Skanneverktøy som Syft og Trivy rekonstruerer en SBOM ut fra filer; CRACI registrerer den fra bygget. Derfor er SBOM-er fra bygget annerledes.
Registrert under bygget, ikke skannet etterpå
De fleste SBOM-generatorer leser filer etter bygget og rekonstruerer det de tror gikk inn i det. CRACI genererer SBOM-en i sin egen CI-runner. En pakkebevisst proxy observerer trafikken fra hver jobb til pakkekildene, så SBOM-en viser hva jobben faktisk hentet inn, transitive avhengigheter inkludert, og ikke hva et manifest sier at den burde trenge. Registreringen krever verken en lockfile, installerte avhengigheter eller et ekstra skanningssteg.
Transitive avhengigheter i alle lag
Det meste av det et bygg henter inn, er ikke en direkte avhengighet. Det er en avhengighet av en avhengighet, flere lag ned, og noe av det dukker aldri opp i en lockfile i det hele tatt: ferdigbygde binærfiler som et byggeskript laster ned, pakker gjenopprettet fra en cache, operativsystempakker. CRACI registrerer hver pakke jobben hentet, på alle nivåer, så sårbarheter matches mot hele treet. I direkte sammenligninger med andre SBOM-verktøy har denne mer fullstendige registreringen avdekket sårbarheter som de andre verktøyene ikke rapporterte.
Pakker gjenopprettet fra CI-cacher blir værende i SBOM-en
Det er gjerne ved cacher at registrering under bygget svikter: En pakke som gjenopprettes fra en cache, berører aldri et register, så en proxy alene ville gått glipp av den. CRACI tar med seg dokumentasjonen for avhengighetene i cachen, så pakker gjenopprettet fra en CI-cache blir værende i SBOM-en til jobben som gjenopprettet dem.
En fullstendighetsstatus for hver jobb
Sårbarhetssporing kan bare matche komponentene SBOM-en din inneholder. En pakke som mangler i SBOM-en, er en sårbarhet ingen blir varslet om. Derfor presenterer ikke CRACI hver SBOM som fullstendig, men angir fullstendigheten for hver jobb og hver cache: Complete, Complete with connections, Incomplete, Unavailable eller Not recorded. Du vet hvilke SBOM-er du kan stole på, og hvilke som trenger en nærmere titt.
Økosystemene og formatene du leverer
CRACI registrerer pakker fra npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk og Git-kilder, i tillegg til download-presets for Yocto og OpenEmbedded, og behandler JFrog Artifactory-speil for npm og PyPI som kjente kilder. Støtte for Maven og Java står på veikartet. SBOM-er eksporteres i CycloneDX og SPDX, transitive avhengigheter inkludert, klare til å deles med kunder, partnere og revisorer.
Deklarerte lisenser på hver komponent
Hver registrerte pakke tar med seg sin deklarerte lisens inn i SBOM-en. Du ser hvilke avhengigheter som har en kommersiell eller på annen måte restriktiv lisens før du leverer, og copyleft-lisenser fanges opp før de havner i produktet ditt.
Provenance via API-et
SBOM-en er én del av det CRACI registrerer for hver jobb. Det offentlige REST-API-et returnerer SBOM-er, nettverksspor og provenance, alt registrert fra det samme bygget.
Overvåket etter utgivelse
En SBOM er måten et selskap vet hva som finnes i programvaren det leverer, og kunder og myndigheter ber stadig oftere om en: Cyber Resilience Act krever at produsenter utarbeider en for produkter som selges i EU. CRACI vurderer overvåkede SBOM-er på nytt etter hvert som nye sårbarheter publiseres, samler funn på tvers av bygg og repositorier og støtter VEX. SBOM-ene du samler inn fra dine egne leverandører, overvåkes side om side med byggene dine.
En registrert SBOM ved siden av en skannet
Skannere er riktig verktøy for programvare du ikke har bygget selv. For dine egne utgivelser er dette hva registrering av bygget endrer. En skanner leser lockfilen eller resultatet og utleder hva som gikk inn. CRACI ser trafikken som kommer inn i bygget, så de skjulte avhengighetene som installasjonshooks, byggeskript og base-images trekker inn, også havner i SBOM-en.
| Funksjon | CRACI | Skannerbasert SBOM-verktøy |
|---|---|---|
| Hvordan komponentlisten blir til | Registrert fra byggets egen pakketrafikk | Rekonstruert fra filer i etterkant |
| Krever en lockfile eller installerte avhengigheter | Nei | Som regel det ene eller det andre |
| Pakker gjenopprettet fra CI-cacher | Dokumentasjonen følger med cachen | Bare hvis filene finnes når det skannes |
| Fullstendighetsstatus per jobb | Fem statuser, per jobb og per cache | |
| Signert kobling fra artefakt til bygg | Ingen signert provenance | Med et separat signeringssteg |
| Programvare du ikke har bygget selv | Legg til leverandørens SBOM i stedet | |
| CI-systemer | GitHub Actions i dag; andre CI-systemer på veikartet | Kjører i alle CI-systemer |
- Inkludert
- Delvis
- Ikke inkludert
- På veikartet
Sammenligner du bestemte verktøy? Se SBOM-verktøy sammenlignet for Syft, Trivy, cdxgen, Microsoft SBOM Tool, Dependency-Track med flere. For det store bildet, se verktøy for sikkerhet i programvareleverandørkjeden sammenlignet.
SBOM basics: SPDX, CycloneDX and OpenVEX
Hva en SBOM registrerer, hvordan formatene SPDX og CycloneDX skiller seg i praksis, og hva OpenVEX tilfører om hvorvidt en sårbarhet faktisk rammer et produkt.
Petteri Pulkkinen og Erika Marttinen på Kubernetes Community Days Helsinki 2026, 16:50 til 22:05 av SBOMbastic: Getting Ready for Upcoming EU Cybersecurity Regulation in Software Supply Chains.
SBOM-generering: ofte stilte spørsmål
Hva er SBOM-generering?
SBOM-generering er å lage en software bill of materials, en programvarestykkliste: en maskinlesbar liste over komponentene og avhengighetene i en programvare. Det kan gjøres ut fra kildefiler, under bygget eller ved å analysere en ferdig artefakt, for eksempel et container-image. CRACI genererer SBOM-en under bygget, ut fra det bygget faktisk hentet.
Hvordan genererer CRACI en SBOM?
GitHub Actions-jobbene dine kjører på CRACI-runnere. Mens hver jobb kjører, observerer en pakkebevisst proxy trafikken til pakkekildene og registrerer pakkene jobben henter inn, inkludert transitive avhengigheter og pakker gjenopprettet fra CI-cacher. Hver jobb får sin egen SBOM med en fullstendighetsstatus.
Må jeg endre workflowene mine?
Du endrer runs-on til craci. CRACI erstatter runneren, ikke GitHub Actions, så workflowene dine og kjøringene deres blir værende i GitHub.
Hvilke pakkeøkosystemer registrerer CRACI?
npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk og Git-kilder, i tillegg til download-presets for Yocto og OpenEmbedded. JFrog Artifactory-speil for npm og PyPI behandles som kjente kilder. Støtte for Maven og Java står på veikartet.
Hvilke SBOM-formater kan jeg eksportere?
CycloneDX og SPDX, inkludert transitive avhengigheter og den deklarerte lisensen til hver komponent.
Hva betyr fullstendighetsstatusen?
Complete betyr at CRACI observerte fullstendig dokumentasjon for jobben, og at hver gjenopprettede cache var fullstendig. Complete with connections betyr at jobben også brukte egendefinerte nettverkstilkoblinger som er verdt å se gjennom. Incomplete betyr at et forhold kan ha utelatt avhengigheter. Unavailable betyr at dokumentasjonen ikke kunne vurderes, og Not recorded betyr at jobben er eldre enn rapporteringen av fullstendighet.
Finner CRACI sårbarheter i SBOM-en?
Ja. CRACI vurderer overvåkede SBOM-er på nytt etter hvert som nye sårbarheter publiseres, samler funn på tvers av bygg og repositorier og støtter VEX. Sikkerhetsteamene prioriterer funnene og sender dem videre til teamene som eier rettingen.
Kan CRACI generere en SBOM for programvare jeg ikke har bygget selv?
Nei. CRACI registrerer byggene som kjører på runnerne sine. For programvare du kjøper, legger du til leverandørens SBOM, og CRACI overvåker den side om side med dine egne bygg. For et tredjeparts-image du ikke har bygget selv, er en skanner det praktiske valget; se SBOM-verktøy sammenlignet.
Se SBOM-en for ditt eget bygg
Book en demo, kjør en av GitHub Actions-workflowene dine på CRACI, og se hva den faktisk hentet inn
Book en demo