SBOM-generering, registreret under buildet
CRACI er et værktøj til SBOM-generering, der registrerer, hvad hvert GitHub Actions-build faktisk hentede, i stedet for at scanne filer bagefter. Hver SBOM fortæller, hvor komplet den er.
Kort sagt: Kør dine GitHub Actions-jobs på CRACI-runnere, og hvert job får en SBOM over de pakker, det hentede, inklusive transitive afhængigheder og pakker gendannet fra CI-caches, eksporteret i CycloneDX eller SPDX. Hver SBOM har en fuldstændighedsstatus og overvåges for nye sårbarheder efter release. Scanningsværktøjer som Syft og Trivy rekonstruerer en SBOM ud fra filer; CRACI registrerer den fra buildet. Derfor er build-time SBOM'er anderledes.
Registreret under buildet, ikke scannet bagefter
De fleste SBOM-generatorer læser filer efter buildet og rekonstruerer, hvad de tror, der gik ind i det. CRACI genererer SBOM'en i sin egen CI-runner. En pakkebevidst proxy overvåger hvert jobs trafik til pakkekilderne, så SBOM'en viser, hvad jobbet faktisk hentede, inklusive transitive afhængigheder, og ikke hvad et manifest siger, det burde have brug for. Registreringen kræver hverken en lockfile, installerede afhængigheder eller et ekstra scanningstrin.
Transitive afhængigheder i alle lag
Det meste af det, et build henter, er ikke en direkte afhængighed. Det er en afhængighed af en afhængighed, flere lag nede, og noget af det optræder slet ikke i en lockfile: færdigbyggede binærfiler, som et build-script downloader, pakker gendannet fra en cache, styresystempakker. CRACI registrerer hver eneste pakke, jobbet hentede, i alle lag, så sårbarheder matches mod hele træet. I direkte sammenligninger med andre SBOM-værktøjer har den mere komplette registrering afdækket sårbarheder, som de andre værktøjer ikke rapporterede.
Pakker gendannet fra CI-caches bliver i SBOM'en
Det er typisk ved caches, at registrering under buildet bryder sammen: En pakke gendannet fra en cache rører aldrig et registry, så en proxy alene ville overse den. CRACI sender dokumentationen for afhængighederne med cachen, så pakker gendannet fra en CI-cache bliver i SBOM'en for det job, der gendannede dem.
En fuldstændighedsstatus for hvert job
Sårbarhedssporing kan kun matche de komponenter, din SBOM indeholder. En pakke, der mangler i SBOM'en, er en sårbarhed, ingen bliver advaret om. Derfor præsenterer CRACI ikke hver SBOM som komplet, men angiver fuldstændigheden for hvert job og hver cache: Complete, Complete with connections, Incomplete, Unavailable eller Not recorded. Du ved, hvilke SBOM'er du kan stole på, og hvilke der skal kigges nærmere på.
De økosystemer og formater, du leverer
CRACI registrerer pakker fra npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk og Git-kilder samt download-presets til Yocto og OpenEmbedded, og behandler JFrog Artifactory-spejle til npm og PyPI som kendte kilder. Understøttelse af Maven og Java er på roadmappen. SBOM'er eksporteres i CycloneDX og SPDX, inklusive transitive afhængigheder, klar til at dele med kunder, partnere og revisorer.
Deklarerede licenser på hver komponent
Hver registreret pakke tager sin deklarerede licens med ind i SBOM'en. Du kan se, hvilke afhængigheder der er under en kommerciel eller på anden måde restriktiv licens, før du leverer, og copyleft-licenser bliver fanget, før de ender i dit produkt.
Provenance via API'et
SBOM'en er én del af det, CRACI registrerer for hvert job. Det offentlige REST API returnerer SBOM'er, netværkstraces og provenance, alt sammen registreret fra det samme build.
Overvåget efter release
En SBOM er måden, en virksomhed ved, hvad der er i den software, den leverer, og kunder og myndigheder beder i stigende grad om en: Cyber Resilience Act kræver, at producenter udarbejder en for produkter, der sælges i EU. CRACI genvurderer løbende overvågede SBOM'er, efterhånden som nye sårbarheder offentliggøres, samler fund på tværs af builds og repositories og understøtter VEX. De SBOM'er, du indsamler fra dine egne leverandører, overvåges side om side med dine builds.
En registreret SBOM ved siden af en scannet
Scannere er det rigtige værktøj til software, du ikke selv har bygget. For dine egne releases er det her, hvad registrering af buildet ændrer. En scanner læser lockfilen eller outputtet og udleder, hvad der gik ind. CRACI ser trafikken, der kommer ind i buildet, så de skjulte afhængigheder, som install-hooks, build-scripts og base-images trækker ind, også ender i SBOM'en.
| Funktion | CRACI | Scannerbaseret SBOM-værktøj |
|---|---|---|
| Hvordan komponentlisten bliver til | Registreret fra buildets egen pakketrafik | Rekonstrueret fra filer bagefter |
| Kræver en lockfile eller installerede afhængigheder | Nej | Som regel det ene eller det andet |
| Pakker gendannet fra CI-caches | Dokumentationen følger med cachen | Kun hvis filerne er der, når der scannes |
| Fuldstændighedsstatus pr. job | Fem statusser, pr. job og pr. cache | |
| Signeret kobling fra artefakt til build | Ingen signeret provenance | Med et separat signeringstrin |
| Software, du ikke selv har bygget | Tilføj leverandørens SBOM i stedet | |
| CI-systemer | GitHub Actions i dag; andre CI-systemer på roadmappen | Kører i ethvert CI |
- Inkluderet
- Delvist
- Ikke inkluderet
- På roadmappen
Sammenligner du bestemte værktøjer? Se SBOM-værktøjer sammenlignet for Syft, Trivy, cdxgen, Microsoft SBOM Tool, Dependency-Track og flere. For det store billede, se værktøjer til forsyningskædesikkerhed for software sammenlignet.
SBOM basics: SPDX, CycloneDX and OpenVEX
Hvad en SBOM registrerer, hvordan formaterne SPDX og CycloneDX adskiller sig i praksis, og hvad OpenVEX tilføjer om, hvorvidt en sårbarhed faktisk påvirker et produkt.
Petteri Pulkkinen og Erika Marttinen ved Kubernetes Community Days Helsinki 2026, 16:50 til 22:05 af SBOMbastic: Getting Ready for Upcoming EU Cybersecurity Regulation in Software Supply Chains.
SBOM-generering: ofte stillede spørgsmål
Hvad er SBOM-generering?
SBOM-generering er at producere en software bill of materials, en softwarestykliste: en maskinlæsbar liste over komponenterne og afhængighederne i et stykke software. Det kan ske ud fra kildefiler, under buildet eller ved at analysere et færdigt artefakt som et container-image. CRACI genererer SBOM'en under buildet, ud fra hvad buildet faktisk hentede.
Hvordan genererer CRACI en SBOM?
Dine GitHub Actions-jobs kører på CRACI-runnere. Mens hvert job kører, overvåger en pakkebevidst proxy dets trafik til pakkekilderne og registrerer de pakker, det henter, inklusive transitive afhængigheder og pakker gendannet fra CI-caches. Hvert job får sin egen SBOM med en fuldstændighedsstatus.
Skal jeg ændre mine workflows?
Du ændrer runs-on til craci. CRACI erstatter runneren, ikke GitHub Actions, så dine workflows og deres kørsler bliver i GitHub.
Hvilke pakkeøkosystemer registrerer CRACI?
npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk og Git-kilder samt download-presets til Yocto og OpenEmbedded. JFrog Artifactory-spejle til npm og PyPI behandles som kendte kilder. Understøttelse af Maven og Java er på roadmappen.
Hvilke SBOM-formater kan jeg eksportere?
CycloneDX og SPDX, inklusive transitive afhængigheder og hver komponents deklarerede licens.
Hvad betyder fuldstændighedsstatussen?
Complete betyder, at CRACI observerede fuldstændig dokumentation for jobbet, og at hver gendannet cache var komplet. Complete with connections betyder, at jobbet også brugte brugerdefinerede netværksforbindelser, som er værd at gennemgå. Incomplete betyder, at et forhold kan have udeladt afhængigheder. Unavailable betyder, at dokumentationen ikke kunne evalueres, og Not recorded betyder, at jobbet er ældre end rapporteringen af fuldstændighed.
Finder CRACI sårbarheder i SBOM'en?
Ja. CRACI genvurderer løbende overvågede SBOM'er, efterhånden som nye sårbarheder offentliggøres, samler fund på tværs af builds og repositories og understøtter VEX. Sikkerhedsteams triagerer fundene og sender dem videre til de teams, der ejer rettelsen.
Kan CRACI generere en SBOM for software, jeg ikke selv har bygget?
Nej. CRACI registrerer de builds, der kører på dets runnere. For software, du køber, tilføjer du leverandørens SBOM, og CRACI overvåger den side om side med dine egne builds. For et tredjeparts-image, du ikke selv har bygget, er en scanner det praktiske valg; se SBOM-værktøjer sammenlignet.
Se SBOM'en for dit eget build
Book en demo, kør et af dine GitHub Actions-workflows på CRACI, og se, hvad det faktisk hentede
Book en demo