Jak začít se statickým testováním bezpečnosti u infrastruktury jako kódu

Přemýšlíte, jak začít se statickým testováním bezpečnosti aplikací (SAST)? Třeba vám pomůže tento článek představující vybrané nástroje a příklady jejich začlenění do CI/CD pipeline v IaC (Infrastructure as Code).

25. 10. 2024 Matěj Smyčka DevOps

Bez popisku

Infrastructure as Code (IaC) je postup softwarového inženýrství, který umožňuje spravovat a zajišťovat infrastrukturu pomocí kódu. SAST (Static Application Security Testing) hraje klíčovou roli při zajišťování bezpečnosti artefaktů IaC. V tomto textu představíme užitečné nástroje pro skenování artefaktů IaC a na příkladech ukážeme, jak SAST začlenit do CI/CD pipeliny.

Obecně

Doporučujeme používat vestavěné šablony pro SAST IaC z Gitlabu, je to nejlepší způsob, jak začít, a ideální základ, pro pokročilejší použití postupujte dle pokynů níže. Příklad pipeline se SAST IaC je níže:

---
include:
  - template: Security/SAST.gitlab-ci.yml
  - template: Security/Dependency-Scanning.gitlab-ci.yml
  - template: Security/Secret-Detection.gitlab-ci.yml
  - template: Security/SAST-IaC.gitlab-ci.yml

stages:
test

Všechny jazyky zmiňované v tomto cheetsheetu jsou podporovány SAST IaC šablonami v GitLabu.

Pipeline používá nástroj kick. Jde o uverzální SAST nástroj podporující řadu jazyků, částečně na úkor přesnosti. Pro specifické jazyky je vhodnější použít specializované nástroje.

Poznámka: IaC skenování podporuje různé konfigurační soubory. Pokud jsou v projektu zjištěny jakékoli podporované konfigurační soubory, jsou skenovány pomocí KICS. Podporovány jsou projekty s kombinací konfiguračních souborů IaC.

Docker

Při analýze nástrojů jsme zjistili, že nástroje našly chyby, které navzdory označení kritické nebo vysoké neměly takový dopad, aby si toto hodnocení zasloužily. Doporučujeme tedy vybírat nástroj spíše podle typu projektu, na kterém pracujete.

Doporučené nástroje:

Naše doporučení: kombinace grype a hadolint. Tyto nástroje se vzájemně dobře doplňují.

Kubernetes

Kubernetes, též k8s, mohou mít různé formy konfigurací. Nejčastější jsou k8s manifesty nebo helmcharts.

Doporučené nástroje:

Ansible

Několik nástrojů se zaměřuje speciálně i na Ansible. Je to proto, že Ansible se používá hlavně k nastavení a konfiguraci strojů, a nejde tak o významný zdroj zranitelností. Tyto nástroje se zpravidla zaměřují na kontrolu toho, co Ansible skript nasazuje, nebo zda ve skriptu náhodou nezůstaly nějaké secrets (hesla, tokeny, API klíče).

Tyto problémy řeší jiné nástroje, proto doporučujeme kombinovat nástroje podle toho, co potřebujete zkontrolovat. Pokud například potřebujete zkontrolovat citlivé informace, použijte GitLeaks nebo TruffleHog.

Doporučené nástroje:

CI/CD Pipeliny

Další příklady naleznete v našem cheatsheetu pro CI/CD pipeliny.

Používáte starou verzi internetového prohlížeče. Doporučujeme aktualizovat Váš prohlížeč na nejnovější verzi.

Další info