Generování SBOM zaznamenané během buildu
CRACI je nástroj pro generování SBOM, který zaznamenává, co každý build v GitHub Actions skutečně stáhl, místo aby soubory skenoval až potom. Každá SBOM uvádí, jak je úplná.
Ve zkratce: spouštějte své joby GitHub Actions na runnerech CRACI a každý job dostane SBOM balíčků, které stáhl, včetně tranzitivních závislostí a balíčků obnovených z cache CI, exportovanou ve formátu CycloneDX nebo SPDX. Každá SBOM nese stav úplnosti a po vydání se monitoruje kvůli novým zranitelnostem. Skenovací nástroje jako Syft a Trivy rekonstruují SBOM ze souborů; CRACI ji zaznamenává z buildu. Proč se SBOM z doby buildu liší.
Zaznamenáno během buildu, ne naskenováno potom
Většina generátorů SBOM čte soubory až po buildu a rekonstruuje, co do něj podle nich vstoupilo. CRACI generuje SBOM uvnitř vlastního runneru CI. Proxy, která rozumí balíčkům, sleduje provoz každého jobu ke zdrojům balíčků, takže SBOM uvádí, co job skutečně stáhl, včetně tranzitivních závislostí, a ne to, co by podle manifestu měl potřebovat. Aby záznam vznikl, není potřeba lockfile, nainstalovaný strom závislostí ani další krok skenování.
Každá úroveň tranzitivních závislostí
Většina toho, co build stáhne, není přímá závislost. Je to závislost závislosti o několik úrovní níž a část z toho se v lockfilu vůbec neobjeví: předpřipravené binárky, které stáhne skript buildu, balíčky obnovené z cache, balíčky operačního systému. CRACI zaznamená každý balíček, který job stáhl, v jakékoli hloubce, takže se zranitelnosti porovnávají s celým stromem. Při přímém srovnání s jinými nástroji SBOM odhalil tento úplnější záznam zranitelnosti, které ostatní nástroje nenahlásily.
Balíčky obnovené z cache CI zůstávají v SBOM
Právě u cache se záznam v době buildu obvykle rozbije: balíček obnovený z cache se nikdy nedotkne registru, takže samotná proxy by ho přehlédla. CRACI přenáší důkazy o závislostech spolu s cache, takže balíčky obnovené z cache CI zůstávají v SBOM jobu, který je obnovil.
Stav úplnosti pro každý job
Sledování zranitelností dokáže porovnat jen komponenty, které vaše SBOM uvádí. Balíček, který v SBOM chybí, je zranitelnost, na kterou nikoho nic neupozorní. Proto CRACI nevydává každou SBOM za úplnou, ale uvádí úplnost pro každý job a každou cache: Complete, Complete with connections, Incomplete, Unavailable nebo Not recorded. Víte tak, na které SBOM se můžete spolehnout a které je potřeba prověřit.
Ekosystémy a formáty, které dodáváte
CRACI zaznamenává balíčky ze zdrojů npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk a Git a k tomu předvolby pro stahování Yocto a OpenEmbedded, a zrcadla npm a PyPI v JFrog Artifactory považuje za známé zdroje. Podpora Mavenu a Javy je v plánu vývoje. SBOM se exportují ve formátech CycloneDX a SPDX včetně tranzitivních závislostí, připravené ke sdílení se zákazníky, partnery a auditory.
Deklarované licence u každé komponenty
Každý zaznamenaný balíček přenáší svou deklarovanou licenci do SBOM. Ještě před dodáním vidíte, které závislosti jsou pod komerční nebo jinak omezující licencí, a copyleftové licence zachytíte dříve, než skončí ve vašem produktu.
Údaje o původu přes API
SBOM je jednou částí toho, co CRACI u každého jobu zaznamenává. Veřejné REST API vrací SBOM, síťové záznamy a údaje o původu, vše zaznamenané ze stejného buildu.
Monitorováno i po vydání
SBOM je způsob, jak firma ví, co je uvnitř softwaru, který dodává, a zákazníci i regulátoři ji stále častěji požadují: Cyber Resilience Act ukládá výrobcům povinnost vypracovat ji pro produkty prodávané v EU. CRACI průběžně znovu vyhodnocuje monitorované SBOM, jakmile se zveřejní nové zranitelnosti, agreguje nálezy napříč buildy a repozitáři a podporuje VEX. SBOM, které získáte od vlastních dodavatelů, se monitorují spolu s vašimi buildy.
Zaznamenaná SBOM vedle naskenované
Skenery jsou správným nástrojem pro software, který jste nesestavili sami. U vašich vlastních vydání mění záznam buildu toto. Skener přečte lockfile nebo výstup a odvodí, co do buildu vstoupilo. CRACI vidí provoz přicházející do buildu, takže se do SBOM dostanou i skryté závislosti, které stahují instalační hooky, skripty buildu a základní image.
| Funkce | CRACI | Nástroj SBOM založený na skeneru |
|---|---|---|
| Jak vzniká seznam komponent | Zaznamenán z vlastního provozu balíčků buildu | Zpětně rekonstruován ze souborů |
| Potřebuje lockfile nebo nainstalované závislosti | Ne | Obvykle jedno nebo druhé |
| Balíčky obnovené z cache CI | Důkazy putují spolu s cache | Jen pokud jsou soubory v době skenování na místě |
| Stav úplnosti pro každý job | Pět stavů, pro každý job a každou cache | |
| Podepsané propojení artefaktu s buildem | Bez podepsaných údajů o původu | S odděleným krokem podepisování |
| Software, který jste nesestavili sami | Místo toho přidejte SBOM dodavatele | |
| Systémy CI | Dnes GitHub Actions; další systémy CI v plánu vývoje | Běží v jakémkoli CI |
- Součástí
- Částečně
- Není součástí
- V plánu vývoje
Srovnáváte konkrétní nástroje? Srovnání nástrojů SBOM zahrnuje Syft, Trivy, cdxgen, Microsoft SBOM Tool, Dependency-Track a další. Širší obrázek nabízí srovnání nástrojů pro bezpečnost softwarového dodavatelského řetězce. Zavádíte SBOM v mnoha týmech? Viz generování SBOM napříč vývojářskými týmy.
SBOM basics: SPDX, CycloneDX and OpenVEX
Co SBOM zaznamenává, jak se formáty SPDX a CycloneDX liší v praxi a co přidává OpenVEX k otázce, zda zranitelnost produkt skutečně ovlivňuje.
Petteri Pulkkinen a Erika Marttinen na akci Kubernetes Community Days Helsinki 2026, od 16:50 do 22:05 záznamu SBOMbastic: Getting Ready for Upcoming EU Cybersecurity Regulation in Software Supply Chains.
Generování SBOM: časté dotazy
Co je generování SBOM?
Generování SBOM je vytvoření softwarového kusovníku: strojově čitelného seznamu komponent a závislostí v daném softwaru. Lze ho provést ze zdrojových souborů, během buildu nebo analýzou hotového artefaktu, například image kontejneru. CRACI generuje SBOM během buildu, z toho, co build skutečně stáhl.
Jak CRACI generuje SBOM?
Vaše joby GitHub Actions běží na runnerech CRACI. Během každého jobu sleduje proxy, která rozumí balíčkům, jeho provoz ke zdrojům balíčků a zaznamenává balíčky, které stahuje, včetně tranzitivních závislostí a balíčků obnovených z cache CI. Každý job dostane vlastní SBOM se stavem úplnosti.
Musím měnit svá workflow?
Změníte runs-on na craci. CRACI nahrazuje runner, ne GitHub Actions, takže vaše workflow i jejich běhy zůstávají na GitHubu.
Které ekosystémy balíčků CRACI zaznamenává?
Zdroje npm, PyPI, RubyGems, Cargo, Go, Nix, OCI, apt, apk a Git a k tomu předvolby pro stahování Yocto a OpenEmbedded. Zrcadla npm a PyPI v JFrog Artifactory se považují za známé zdroje. Podpora Mavenu a Javy je v plánu vývoje.
Které formáty SBOM mohu exportovat?
CycloneDX a SPDX, včetně tranzitivních závislostí a deklarované licence každé komponenty.
Co znamená stav úplnosti?
Complete znamená, že CRACI zaznamenalo úplné důkazy z jobu a každá obnovená cache byla úplná. Complete with connections znamená, že job navíc použil vlastní síťová spojení, která stojí za kontrolu. Incomplete znamená, že nějaká podmínka mohla závislosti vynechat. Unavailable znamená, že důkazy nebylo možné vyhodnotit, a Not recorded znamená, že job vznikl dříve, než se úplnost začala vykazovat. Viz úplnost SBOM.
Najde CRACI zranitelnosti v SBOM?
Ano. CRACI průběžně znovu vyhodnocuje monitorované SBOM, jakmile se zveřejní nové zranitelnosti, agreguje nálezy napříč buildy a repozitáři a podporuje VEX. Bezpečnostní týmy provádějí triáž toho, co najde, a předávají to týmům, které odpovídají za opravu.
Dokáže CRACI vygenerovat SBOM pro software, který jsem nesestavil?
Ne. CRACI zaznamenává buildy, které běží na jeho runnerech. U softwaru, který kupujete, přidejte SBOM dodavatele a CRACI ji bude monitorovat spolu s vašimi vlastními buildy. Pro image třetí strany, které jste nesestavili, je praktickou volbou skener; viz srovnání nástrojů SBOM.
Podívejte se na SBOM svého vlastního buildu
Rezervujte si demo, spusťte jedno ze svých workflow GitHub Actions na CRACI a podívejte se, co skutečně stáhlo
Rezervujte si demo