Conftest
SDLC / Policy-as-Code
Testy konfiguracji (YAML/JSON/HCL) regułami Rego — policy-as-code w CI.
Conftest pozwala pisać testy względem ustrukturyzowanych plików konfiguracyjnych — manifestów Kubernetes, planów Terraform, Dockerfile, YAML/JSON/HCL — przy użyciu języka Rego z Open Policy Agent. Reguły trzymasz w repo i uruchamiasz jako krok CI, dzięki czemu zgodność konfiguracji jest deterministyczną bramką, a nie audytem po wdrożeniu.
Kiedy używać
- Chcesz egzekwować własne reguły na manifestach/IaC w pipeline (np. zakaz
:latest, wymagane labelki, limity). - Wolisz Rego i ekosystem OPA, ale potrzebujesz prostego CLI do plików, nie serwera polityk.
- Standaryzujesz bramki konfiguracji w wielu repozytoriach.
Przykład użycia
# policy/deployment.rego
package main
deny contains msg if {
input.kind == "Deployment"
not input.spec.template.spec.securityContext.runAsNonRoot
msg := "kontener musi działać jako non-root"
}
conftest test k8s/ --policy policy/ # bramka w CI
Warto wiedzieć
- Ten sam język (Rego) co OPA i egzekwowanie w klastrze przez OPA Gatekeeper — statycznie w CI, dynamicznie w klastrze.
- Uzupełnia skanery jak Checkov/Trivy o Twoje własne, dziedzinowe reguły.