Závislosti
Skenování kontejnerů
Skenování kontejnerů prověřuje image kontejneru na známé zranitelnosti, zastaralé balíčky a rizikovou konfiguraci. Image spojuje vaši aplikaci se základním operačním systémem a vším mezi nimi, takže sken pokrývá mnohem víc než jen vaše vlastní závislosti. Zároveň čte hotovou image, což omezuje, co může vědět o tom, jak vznikla.
Aktualizováno
Jak skenování kontejnerů funguje
- Rozbalení image. Skener čte vrstvy image, aniž by je spouštěl.
-
Výpis obsahu. Čte databáze balíčků operačního systému a manifesty aplikací, například
package-lock.jsonzkopírovaný do image. - Párování dat. Porovnává balíčky s daty o zranitelnostech od distribucí a z databází bezpečnostních upozornění.
- Kontrola konfigurace. Některé nástroje také upozorní například na běh pod rootem nebo na tajné klíče ponechané ve vrstvě.
Kde sken spouštět
| Fáze | Co vám dává | Omezení |
|---|---|---|
| CI, po buildu image | Zastaví build dříve, než se image odešle | Snímek bezpečnostních upozornění z daného dne |
| Registr | Znovu skenuje uložené image, jak přibývají nová upozornění | Problémy najde až po zveřejnění image |
| Admission v Kubernetes | Při nasazení zablokuje nenaskenované nebo neúspěšné image | Vyžaduje politiku a způsob, jak řešit výjimky |
| Runtime | Ukazuje, které image právě běží a co je načteno | Vyžaduje agenta ve vašich clusterech |
Nástroje pro skenování kontejnerů
- Open source: Trivy a Grype jsou běžnou bezplatnou volbou a oba se snadno začlení do CI.
- Vestavěné v registrech a platformách: skenování nabízí Docker Scout i hlavní cloudové registry.
- Komerční platformy: Snyk a Anchore přidávají politiky, reporting a workflow.
Jak snížit počet nálezů
- Začněte s menší základní image. Odlehčené nebo distroless image obsahují méně balíčků, takže se na ně vztahuje méně upozornění.
- Pravidelně znovu sestavujte. Základní image dostávají opravy a image, která byla v březnu čistá, už čistá není.
- Používejte vícefázové buildy. Kompilátory a nástroje pro build by do výsledné image patřit neměly.
- Připínejte základní image přes digest. Tag se vám může pod rukama změnit, digest ne.
- Stanovte priority. Mnoho nálezů zatím nemá opravu nebo leží v balíčcích, které vaše aplikace nikdy nepoužívá. Viz jak stanovit priority zranitelností.
Stejné páky platí i mimo image: jak snížit šum zranitelností je seřazuje pro každý skener, který provozujete.
Co sken kontejneru nevidí
- Kompilovaný kód. Binárka v Go nebo Rustu v image nese jen omezená metadata a skener musí odvodit, co do ní vstoupilo.
-
Soubory bez záznamu o balíčku. Software přidaný přes
curlnebo zkopírovaný do vrstvy nemá v databázi balíčků žádný záznam. - Co build použil a zanechal za sebou. Vícefázové buildy zahazují nástroje, které image vytvořily. Pokud byl některý z nich kompromitován, ve výsledné image o tom nic nesvědčí.
- Odkud pochází. Sken popisuje image, ne build, který ji vytvořil.
Podrobněji viz co SBOM Docker image nezachytí; možnosti najdete v přehledu nejlepších nástrojů SBOM.
Nedávný příklad je PHP2Shell: oficiální image php
kompilují PHP ze zdrojového kódu, takže runtime nemá žádný záznam o balíčku a na verzi je třeba se zeptat každé image.
Skenování image a zaznamenávání buildů
Skenery jsou správným nástrojem pro image, které jste nesestavili, a také pro clustery a konfiguraci. U image, které sestavujete sami, jde CRACI jinou cestou. Jako váš runner GitHub Actions vidí, co do buildu vstupuje, včetně základní image a vrstev jejího operačního systému, takže zaznamenává, co vstoupilo, místo aby to dodatečně odvozoval. Tyto SBOM pak dál kontroluje, jak vycházejí nové zranitelnosti.
CRACI neskenuje image, které jste nesestavili, clustery, image virtuálních strojů ani chybné konfigurace. Trivy ano, takže si jej pro ně ponechte. Viz CRACI vs Trivy.
Skenování kontejnerů: časté dotazy
Co je skenování kontejnerů?
Je to proces prověření image kontejneru na známé zranitelnosti, zastaralé balíčky a rizikovou konfiguraci, obvykle bez jejího spuštění.
Kdy skenovat image kontejnerů?
V CI po sestavení image a znovu v registru, jak se objevují nová bezpečnostní upozornění. Jediný sken vám zanechá snímek, který rychle zastarává.
Jaký je nejlepší bezplatný skener kontejnerů?
Nejrozšířenějšími bezplatnými možnostmi jsou Trivy a Grype. Oba běží v CI a pokrývají balíčky operačního systému i aplikací.
Jaký je rozdíl mezi skenováním image a SBOM?
SBOM vypisuje, co image obsahuje, kdežto sken kontroluje tento obsah na známé problémy. Mnoho skenerů nejprve sestaví SBOM a teprve pak ji páruje s bezpečnostními upozorněními.
Proč má moje image kontejneru tolik zranitelností?
Většinou kvůli základní image, která přináší balíčky operačního systému. Menší základní image a pravidelné nové buildy jich odstraní většinu.
Dokáže skener kontejnerů číst kompilované binárky?
Částečně. Binárky v Go a Rustu mohou nést určitá metadata o závislostech, ale u velké části kompilovaného kódu nemá skener z čeho vycházet, a musí tedy odvodit, co do něj vstoupilo.
Podívejte se, co vstoupilo do vaší image
Sestavte image na CRACI a porovnejte zaznamenanou SBOM s tím, co hlásí váš skener kontejnerů.
Rezervujte si demo