GNU/Linux >> Znalost Linux >  >> Panels >> Docker

Jak indexovat závislosti obrázku dockeru pomocí Syft

Syft je nástroj CLI, který generuje Software Bill of Materials (SBOM) pro obrázky kontejnerů. SBOM je katalog závislostí používaných vaším obrazem. Poskytuje vám přehled o „materiálech“, které tvoří souborový systém vašeho obrázku.

Vytváření SBOM vám může pomoci identifikovat příliš složité dodavatelské řetězce balíčků, které vás vystavují riziku útoků zmatku v závislosti na závislosti. Distribuce SBOM vedle vašeho obrázku informuje uživatele o tom, co leží pod povrchem. To poskytuje užitečný výchozí bod při zpřísňování zabezpečení dodavatelského řetězce.

Syft je vyvinut společností Anchore, která také nabízí kompletní modul pro skenování kontejnerů. Syft CLI je schopen extrahovat seznamy balíčků z obrázků pomocí oblíbených operačních systémů a programovacích jazyků. Jsou podporovány obrazy Docker i OCI.

Instalace Syft

K dispozici je instalační skript ke stažení nejnovějšího binárního souboru Syft a jeho přidání do cesty:

curl -sSfL https://raw.githubusercontent.com/anchore/syft/main/install.sh | sh -s -- -b /usr/local/bin

Uživatelé počítačů Mac mohou také získat Syft z Homebrew přidáním anchore/syft úložiště a instalaci syft balíček.

Jakmile budete mít Syft v systému, spusťte syft ve vašem terminálu zobrazíte dostupné příkazy. Dokončení pro svůj shell můžete vygenerovat spuštěním syft completion .

Použijte syft version najít verzi vaší instalace. Pravidelně kontrolujte stránku značek GitHub, abyste našli nová vydání, a poté znovu použijte instalační skript ke stažení každé aktualizace.

Skenování obrázku

Funkčnost Syft je aktuálně odhalena jediným dílčím příkazem, syft packages . Předejte mu značku obrázku, aby se vygeneroval SBOM pro:

syft packages alpine:latest

Syft stáhne obrázek, naskenuje jeho obsah a vytvoří katalog objevených balíčků. Výstup se zobrazí jako tabulka ve vašem terminálu. Každý výsledek obsahuje zjištěný název balíčku, verzi a typ.

Seznam balíčků pro tento obrázek je krátký. Jelikož se jedná o základní obraz Alpine, nainstalované balíčky jsou záměrně zjednodušeny, aby poskytovaly co nejmenší povrch. Větší obrázky mohou obsahovat stovky nebo tisíce balíčků v několika různých formátech. Může být užitečné kombinovat Syft se stávajícími unixovými terminálovými nástroji, jako je grep a awk extrahovat data, která hledáte.

syft packages example-image:latest | grep example-package-to-find

Podporované typy balíčků

Syft podporuje mnoho oblíbených formátů balíčků napříč předními operačními systémy a programovacími jazyky. Seznam obsahuje:

  • APK (Alpine), DEB (Debian) a RPM (Fedora) OS balíčky.
  • Identifikace distribucí Linuxu napříč službami Alpine, CentOS, Debian a RHEL.
  • Moduly Go
  • Java vJAR , EAR a WAR variace
  • Balíčky NPM a příze
  • Python Wheels and Eggs
  • Balíčky rubínů

I když nejsou pokryty všechny jazyky, budete mít stále prospěch ze skenování na úrovni operačního systému bez ohledu na to, jaký zásobník vaší aplikace zvolí.

Změna výstupního formátu

Výchozí výstupní formát se nazývá table . Vykreslí sloupcovou tabulku výsledků ve vašem terminálu a vytvoří nový řádek pro každý detekovaný balíček. Alternativní lidsky čitelný formát je text který představuje seznam balíčků s Version a Type pole vnořená pod každou sekci.

Syft také podporuje několik programových formátů:

  • json – Uložte data balíčku do struktury JSON.
  • cyclonedx – Zpráva CycloneDX ve formátu XML.
  • spdx a spdx-json – Přehledy kompatibilní se SPDX ve formátu tag-value nebo JSON.

Použití jednoho z těchto přehledů vám umožní archivovat nálezy do souboru pro pozdější použití:

syft packages alpine:latest -o json > alpine-packages.json

Standardizované formáty CycloneDX a SPDX mohou pomoci integrovat skenování Syft do vašich kanálů CI/CD. Data jsou přístupná dalším nástrojům ekosystému, které pracují se seznamy balíčků a výsledky SBOM.

Syft se také integruje s Grype, samostatným vyhledávačem zranitelností kontejnerového souborového systému Anchore. Pokud používáte výstupní formát JSON, lze data ze Syftu vkládat přímo do Grype.

syft packages example-image:latest -o json > sbom.json
grype sbom:./sbom.json

Grype porovná seznam balíčků se svým indexem známých zranitelností. Zdůrazní balíčky, které obsahují problémy, a poskytne vám okamžitý výchozí bod ke zlepšení vašeho zabezpečení.

Použití jiných zdrojů obrázků

Syft může kromě veřejných registrů Docker používat obrázky z jiných zdrojů. Můžete odkazovat na jakýkoli obrázek kompatibilní s OCI, buď prostřednictvím značky registru, nebo jako uložený obrázek tar. Cesty k archivům obrázků lze předat přímo společnosti Syft:

docker image save my-image:latest > my-image.tar
syft packages ./my-image.tar

Syft pracuje také se soukromými registry Docker. Používá vaše stávající přihlašovací údaje ve vašem ~/.docker/config.json soubor:

{
    "auths": {
        "registry.example.com": {
            "username": "",
            "password": ""
        }
    }
}

Přestože se Syft zaměřuje na skenování obrázků kontejnerů, může také vytvořit SBOM pro libovolné cesty souborového systému. Syft můžete použít k indexování balíčků vašeho hostitele skenováním adresářů, které běžně obsahují softwarové binární soubory a knihovny:

syft packages dir:/usr/bin

Musíte explicitně přidat dir: schéma, pokud odkazujete na cestu mimo váš pracovní adresář. Jinak se to Syft pokusí interpretovat jako odkaz na značku obrázku.

Závěr

Syft extrahuje seznamy balíčků z obrázků kontejnerů. Vygenerovaná data fungují jako SBOM pro vaši image a zvyšují vaše povědomí o délce vašeho dodavatelského řetězce.

Syft je distribuován jako jediný binární soubor, který vytváří zprávy v několika různých formátech. Lze jej snadno integrovat do systémů CI/CD pro nahrání artefaktu SBOM jako součásti procesu vytváření obrazu. To zvyšuje odpovědnost a pomáhá auditním záznamům tím, že zaznamenává úplný seznam softwaru každého obrázku v době jeho vytvoření.

Přidáním skenů Syft do vašeho pracovního postupu budete informováni o balíčcích, které používáte. Jakmile získáte tyto informace, můžete začít posuzovat každý balíček, abyste zjistili, zda je skutečně potřeba. Pokud najdete spoustu balíčků, které vaše pracovní vytížení nevyužívá, zvažte přechod na minimální základní bitovou kopii a navrstvení pouze základního softwaru.


Docker
  1. Jak nainstalovat Jenkins pomocí Docker

  2. Jak nasadit mikroslužby s Dockerem

  3. Jak nasadit aplikace s Rancherem

  1. Jak použít Dockerfile k vytvoření Docker Image

  2. Jak zabalit a přenést obrazy Dockeru z jednoho serveru na druhý

  3. Jak upravit obrázky Docker

  1. Jak sdílet obrázky Docker s ostatními

  2. Jak nainstalovat Nextcloud s Dockerem na váš Linux Server

  3. Jak potvrdit změny v obrazu Dockeru