Hooki

Hook infra: Wykrywanie błędnej konfiguracji IaC

Przeszukuj Terraform, pliki Dockerfile i GitHub Actions pod kątem błędnej konfiguracji albo oceniaj pojedynczy fragment kodu z wiersza poleceń.

Hook infra zgłasza błędną konfigurację infrastruktury jako kodu (IaC), którą da się rozstrzygnąć na podstawie samego pliku: sieć otwartą na cały świat, uprawnienie z symbolem wieloznacznym, sekret w manifeście, kontener działający jako root, niezaufaną wartość w powłoce CI. Czyta wyłącznie pliki IaC (.tf/.tf.json/.hcl, Dockerfile*, .github/workflows/**). To deterministyczny silnik stojący za specjalizacją infra, działający w trybie scan lub check.

Uruchamianie​

npx lagune read infra # scans every IaC file
npx lagune read infra --dir infra # scans a directory
npx lagune read infra --file Dockerfile # scans a single file

Skanowanie wypisuje maksymalnie dwie sekcje. Infrastructure risks found zawiera rozstrzygalne usterki (regułę ingress dla 0.0.0.0/0 na wrażliwym porcie, instrukcję IAM z symbolem wieloznacznym, sekret w manifeście, encrypted = false, moduł git bez przypiętej wersji, obraz, który jawnie działa jako root, curl | sh, wstrzyknięcie skryptu w CI, permissions: write-all), a gdy się pojawi, hook kończy działanie z niezerowym kodem wyjścia. Infrastructure hardening advisories nie zmienia kodu wyjścia (zmienny tag obrazu bazowego, akcja przypięta tylko do tagu). Gdy nic nie znajdzie, hook wypisuje no infrastructure risks found.

Jak odczytać werdykt​

Tryb check wypisuje dopasowany tag o najwyższym poziomie zagrożenia (na przykład public-ingress, iam-wildcard, root-user, curl-pipe, script-injection, write-all), tag zalecenia (mutable-tag, unpinned-action) albo safe. Niezerowy kod wyjścia daje tylko tag rangi ustalenia.

Opcje CLI​

OpcjaWartośćOpis
--patternfragment koduSprawdza jeden fragment kodu. Wymaga --kind. Powtórz, aby sprawdzić kilka.
--kindterraform | dockerfile | github-actionsRodzaj pliku, według którego oceniany jest fragment.
--dirfolderOgranicza skanowanie do folderu. Można powtarzać i łączyć z --file.
--fileplikOgranicza skanowanie do jednego pliku. Można powtarzać i łączyć z --dir.

Bez żadnej opcji hook przeszukuje każdy plik IaC w projekcie. Opcji --pattern nie można łączyć z --dir ani --file.

Wybierz, co hook przeszukuje​

Hook pomija to, co ignoruje Git. Aby pominąć więcej albo przeszukać to, co ignoruje Git, nadaj hookowi infra własne ustawienia:

npx lagune write add --ignore examples --checker infra
{
"checkers": {
"infra": { "gitignore": false, "ignore": ["examples"] }
}
}

Konfiguracja hooków opisuje każde ustawienie.

wskazówka

Hook wychwytuje oczywiste, rozstrzygalne przypadki: brak szyfrowania, ekspozycja przez pull_request_target i właściwy zakres IAM wymagają oceny, którą nadal zapewnia specjalizacja infra.

Najczęściej zadawane pytania

Terraform/HCL (.tf, .tf.json, .hcl), pliki Dockerfile oraz pliki YAML z workflowami i akcjami GitHub Actions w .github/. Hook dociera do tych plików, mimo że skanery kodu źródłowego je pomijają.