Checkov и tfsec
Тема дорожной карты · Terraform
Checkov для Terraform — это сканер статического анализа безопасности, проверяющий HCL-конфигурации до terraform apply для обнаружения некорректных конфигураций, нарушений политик и несоответствий требованиям CIS Benchmarks, NIST, PCI-DSS, SOC 2 и кастомных политик OPA. Запуск checkov -d . против директории Terraform сообщает о проблемах: S3-бакеты с включённым публичным доступом, группы безопасности открытые на 0.0.0.0/0, незашифрованные EBS-тома или IAM-политики с wildcard-правами *. Checkov для Terraform нативно интегрируется в CI/CD-конвейеры (GitHub Actions, GitLab CI, Jenkins) и может комбинироваться с tflint и terraform validate для формирования комплексного gate качества перед apply. Checkov также сканирует JSON-вывод плана Terraform (checkov -f tfplan.json) для более точного представления о том, что реально будет развёрнуто, включая значения, разрешённые из переменных и источников данных.
Как это работает
Checkov и tfsec для Terraform: статические проверки (terraform validate, tflint, tfsec, checkov), unit-тесты (моки провайдеров через tftest или tflint), integration-тесты (terratest — на Go, деплоит в реальное облако, ассертит), policy-as-code (OPA, Sentinel, conftest). Новее: нативный terraform test framework (1.6+) даёт unit-test-like workflow внутри Terraform через *.tftest.hcl-файлы.
Когда применять
terraform validate, tflint, tfsec — в CI на каждый PR; быстрые, ловят опечатки + очевидные security-проблемы. terratest — для критичных модулей (тех, что в prod); медленный, но реальный. Принимайте terraform test после перехода на 1.6+. Policy-as-code — для enforce "no public S3", "all RDS encrypted" и пр.
Типичные ошибки
Ловушки Checkov и tfsec: пропуск тестов "Terraform же это просто конфиг" (это код, уничтожающий реальную инфру на опечатке); flake terratest из-за rate-лимитов облака + сбоев cleanup (всегда defer cleanup); policy-checks игнорируются разработчиками ("просто merge" без фикса) — делайте их required CI-гейтами.