Nejjednodušší způsob, jak najít zranitelnosti v obrázcích Docker pomocí Snyk

Snyk je editor specializující se na analýzu zranitelností v kódu konfiguračních souborů infrastruktury, včetně těch, které se nacházejí v kontejnerech a balíčcích aplikací.

Snyk nejprve nabízí cloudovou platformu, ale nabízí různé produkty.

Snyk OpenSource se integruje prostřednictvím CLI editoru do toku Git. Po spuštění software detekuje zranitelnosti, klasifikuje je podle stupně citlivosti a automaticky opravuje známé bezpečnostní chyby. Tato funkce může být začleněna do cyklu žádosti o stažení, aby bylo možné aplikovat na kód odeslaný do úložišť.

Snyk Infrastructure as Code na druhé straně analyzuje zranitelnosti a opravuje je v konfiguračních souborech JSON a YAML Kubernetes. Zde vám modul pravidel umožňuje konfigurovat citlivost detekcí v rámci úložišť Git podle parametrů, o kterých rozhodnou správci.

Snyk Container vám umožňuje testovat obrázky dockerů a související registry v době jejich vytvoření a poté. Program lze integrovat do rozhraní CLI, SCM, nástrojů CI, registrů kontejnerů a Kubernetes.

Dnes uvidíme, jak můžeme použít Snyk Container, který je součástí Dockeru k detekci zranitelností.

Ukázkový soubor dockeru

První věc, kterou potřebujete pro použití Snyk k detekci zranitelnosti, je obrázek dockeru. V tomto příkladu použijeme následující obrázek dockeru:

FROM python:3.4-alpine
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt
EXPOSE 8000 CMD
[“python”, “app.py”]

První věc, kterou musíme udělat, je vygenerovat obrázek lokálně pomocí následujícího příkazu:

docker build -t 0xyz0/python-app.

Nyní máme obrázek k analýze.

  Jak přizpůsobit ovládací centrum na Macu

Naskenujte obrázek z klienta Docker

Integrace služby Snyk s Dockerem tento proces neuvěřitelně zjednodušuje. Chcete-li spustit skenování, stačí provést následující:

docker scan 0***0/python-app

Začne to analýzou, kde vrátí více či méně rozsáhlý výstup v závislosti na nalezených zranitelnostech, a konečným shrnutím:

Docker scan ukazuje všechny zranitelnosti obrázku

Jak můžete vidět, nejen že vám řekne, kolik zranitelností našel. I když se posunete nahoru, můžete vidět, jaké to jsou a jejich kritičnost, ale také poskytuje doporučení týkající se základního obrázku, který byste měli použít.

Podrobnosti o zranitelnosti můžete také zkontrolovat na Databáze zranitelností Snyk.

V mém případě mi nabízí několik alternativ, takže svůj Dockerfile upravím první možností:

FROM python:3.7.11-slim

ADD . /code

WORKDIR /code

RUN pip install -r requirements.txt

EXPOSE 8000

CMD ["python", "app.py"]

Pokud obrázek znovu sestavím a naskenuji:

docker build -t 0***0/python-app . && docker scan 0***0/python-app

Uvidíte, že výstup nyní vykazuje méně zranitelností a v tomto případě vám řekne, že aktuálně používáte bezpečnější základní obraz:

  Jak ovládat, které aplikace mohou přistupovat ke zdravotním údajům vašeho iPhone

Docker scan zajišťuje, že používáte nejbezpečnější základní bitovou kopii

Můžete také získat podrobnější zprávu, pokud do příkazu přidáte soubor dockeru, který generuje obrázek:

docker scan -f Dockerfile 0***0/python-app

A dokonce vyloučit základní obrázek z analýzy pro případ, že se chcete zaměřit na to, co jste udělali špatně:

docker scan -f Dockerfile --exclude-base 0***0/python-app

Tuto službu lze také integrovat s repozitáři Docker Hub:

K tomu ale musíte mít jedno z placených předplatných. Můžete jej však spustit lokálně s bezplatným plánem, který máte jen pro přihlášení do Docker Hub (má jasné limity skenování), zatímco vyvíjíte nebo chcete zkontrolovat, jak bezpečný je obrázek třetí strany, který chcete použití.

Použití Snyk s Github Actions

První věc, kterou musíte udělat, je vytvořit úložiště a uvnitř vytvořit složku.

.github / worflows /

Dále, chcete-li použít Snyk Container v Github, je vytvořit nový obrázek nebo vzít obrázek, který jsme vytvořili v Docker Hub. Chcete-li použít Snyk, musíte vytvořit nové tajemství s názvem SNYK_TOKEN a pro získání tokenu si musíte vytvořit účet u Snyk. Z Obecných nastavení, kde je uvedeno API Token, jej můžete rychle vygenerovat.

  Jak odebrat účet z mincovny

Pomocí tokenu můžete vytvořit tajemství na Github a použít ho v akci. Nyní mu musíte předat název úložiště, které bylo vytvořeno v Docker Hub. Dále musíte předat zprávu, kterou má odeslat. Můžete přistupovat k výstupům kroků, které lze použít jako proměnnou ve zprávě.

with:
args: 'A new commit has been pushed. Please verify github action:
| worflow $ {{fromJson (steps.repo.outputs.result) .html_url}} / actions
| Exec: $ {{steps.prep.outputs.created}}
| Version: $ {{steps.prep.outputs.version}} '

Jak spustit celý workflow? Jednoduché pouhým stisknutím Mistra. Github Action zjistí soubor uvnitř .github / workflows /.

Slova na závěr 👈

S rostoucí popularitou kontejnerů se stále častěji objevují případy narušení bezpečnosti, z nichž většina je způsobena chybami v nesprávné konfiguraci při rozmístění kontejnerů. Snyk poskytuje účinný a přímočarý nástroj, který nám může pomoci vyhnout se chybám při nesprávné konfiguraci a odhalit nejčastější zranitelnosti v dockerových obrázcích.