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í.
Table of Contents
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.
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:
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.
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.