Zależności
Skanowanie kontenerów
Skanowanie kontenerów sprawdza obraz kontenera pod kątem znanych podatności, przestarzałych pakietów i ryzykownej konfiguracji. Obraz łączy Państwa aplikację z bazowym systemem operacyjnym i wszystkim pomiędzy, więc skan obejmuje znacznie więcej niż własne zależności. Odczytuje też gotowy obraz, co ogranicza jego wiedzę o tym, jak ten obraz powstał.
Zaktualizowano
Jak działa skanowanie kontenerów
- Rozpakowanie obrazu. Skaner odczytuje warstwy obrazu bez ich uruchamiania.
-
Lista zawartości. Odczytuje bazy pakietów systemu operacyjnego i manifesty aplikacji, takie jak
package-lock.jsonskopiowany do obrazu. - Dopasowanie danych. Porównuje pakiety z danymi o podatnościach z dystrybucji i baz biuletynów.
- Sprawdzenie konfiguracji. Niektóre narzędzia oznaczają też takie rzeczy, jak uruchamianie jako root lub sekrety pozostawione w warstwie.
Gdzie uruchamiać skan
| Etap | Co daje | Ograniczenie |
|---|---|---|
| CI, po zbudowaniu obrazu | Powoduje niepowodzenie buildu przed wypchnięciem obrazu | Migawka biuletynów z danego dnia |
| Rejestr | Ponownie skanuje przechowywane obrazy, gdy pojawiają się nowe biuletyny | Znajduje problemy już po publikacji obrazu |
| Kubernetes admission | Blokuje przy wdrożeniu obrazy nieprzeskanowane lub z negatywnym wynikiem | Wymaga polityki i sposobu obsługi wyjątków |
| Środowisko uruchomieniowe | Pokazuje, które obrazy teraz działają i co jest załadowane | Wymaga agenta w Państwa klastrach |
Narzędzia do skanowania kontenerów
- Open source: Trivy i Grype to popularne bezpłatne opcje i oba łatwo wpasowują się w CI.
- Wbudowane w rejestry i platformy: Docker Scout i główne rejestry chmurowe oferują skanowanie.
- Platformy komercyjne: Snyk i Anchore dodają polityki, raportowanie i workflow.
Jak ograniczyć liczbę znalezisk
- Zacząć od mniejszego obrazu bazowego. Obrazy slim lub distroless zawierają mniej pakietów, więc dotyczy ich mniej biuletynów.
- Regularnie przebudowywać. Obrazy bazowe są łatane, a obraz czysty w marcu nie jest czysty dziś.
- Używać buildów wieloetapowych. Kompilatory i narzędzia buildu powinny pozostać poza obrazem końcowym.
- Przypinać obrazy bazowe digestem. Tag może się zmienić bez Państwa wiedzy, a digest nie.
- Priorytetyzować. Wiele znalezisk nie ma jeszcze poprawki lub dotyczy pakietów, których aplikacja nigdy nie używa. Zob. jak priorytetyzować podatności.
Czego skan kontenera nie widzi
- Skompilowanego kodu. Plik binarny Go lub Rust w obrazie zawiera ograniczone metadane, a skaner musi ustalić, co do niego trafiło.
-
Plików bez wpisu o pakiecie. Oprogramowanie dodane przez
curllub skopiowane do warstwy nie ma wpisu w bazie pakietów. - Tego, czego build użył i co porzucił. Buildy wieloetapowe odrzucają narzędzia, które wytworzyły obraz. Jeśli któreś z nich zostało przejęte, nic w obrazie końcowym o tym nie mówi.
- Pochodzenia. Skan opisuje obraz, a nie build, który go wytworzył.
Dokładniej opisuje to strona czego nie zawiera SBOM obrazu Docker, a opcje przedstawia zestawienie najlepszych narzędzi SBOM.
Skanowanie obrazów a rejestrowanie buildów
Skanery to właściwe narzędzie dla obrazów, których Państwo nie zbudowali, a także dla klastrów i konfiguracji. W przypadku obrazów budowanych przez Państwa CRACI idzie inną drogą. Jako Państwa runner GitHub Actions widzi to, co wchodzi do buildu, łącznie z obrazem bazowym i jego warstwami systemu operacyjnego, więc rejestruje to, co trafiło do środka, zamiast ustalać to później. Następnie dalej sprawdza te SBOM-y w miarę publikowania nowych podatności.
CRACI nie skanuje obrazów, których Państwo nie zbudowali, klastrów, obrazów maszyn wirtualnych ani błędnych konfiguracji. Trivy to robi, więc warto go do tego zachować. Zob. CRACI a Trivy.
Skanowanie kontenerów: najczęściej zadawane pytania
Czym jest skanowanie kontenerów?
To proces sprawdzania obrazu kontenera pod kątem znanych podatności, przestarzałych pakietów i ryzykownej konfiguracji, zwykle bez jego uruchamiania.
Kiedy skanować obrazy kontenerów?
W CI po zbudowaniu obrazu i ponownie w rejestrze, gdy pojawiają się nowe biuletyny. Jednorazowy skan pozostawia migawkę, która szybko się starzeje.
Jaki jest najlepszy bezpłatny skaner kontenerów?
Trivy i Grype to najczęściej używane bezpłatne opcje. Oba działają w CI i obejmują pakiety systemu operacyjnego oraz aplikacji.
Jaka jest różnica między skanowaniem obrazów a SBOM?
SBOM wymienia zawartość obrazu, a skan sprawdza tę zawartość pod kątem znanych problemów. Wiele skanerów najpierw buduje SBOM, a potem dopasowuje go do biuletynów.
Dlaczego mój obraz kontenera ma tak wiele podatności?
Głównie z powodu obrazu bazowego, który wnosi pakiety systemu operacyjnego. Mniejszy obraz bazowy i regularne przebudowy usuwają większość z nich.
Czy skaner kontenerów potrafi odczytać skompilowane pliki binarne?
Częściowo. Pliki binarne Go i Rust mogą zawierać pewne metadane o zależnościach, ale wiele skompilowanego kodu daje skanerowi niewiele danych, więc musi wnioskować, co do niego trafiło.
Co trafiło do Państwa obrazu
Proszę zbudować obraz na CRACI i porównać zarejestrowany SBOM z tym, co raportuje Państwa skaner kontenerów.
Umów demo