Что такое Checkov?
Checkov — это open-source инструмент статического анализа для Infrastructure as Code (IaC), разработанный Bridgecrew (теперь часть Palo Alto Networks). Checkov сканирует Terraform, CloudFormation, Kubernetes, Dockerfile и другие IaC файлы на предмет неправильных конфигураций безопасности и compliance нарушений.
Основные возможности Checkov
- Multi-platform поддержка — Terraform, CloudFormation, Kubernetes, Docker
- 1000+ встроенных правил — покрытие основных security best practices
- Custom политики — создание собственных правил на Python или YAML
- CI/CD интеграция — поддержка всех популярных систем
- IDE плагины — интеграция с VS Code, IntelliJ
- SARIF output — совместимость с GitHub Security tab
- Baseline scanning — сравнение с предыдущими результатами
Установка Checkov
Базовое использование
1# Сканирование текущей директории
2checkov -d .
3
4# Сканирование конкретного файла
5checkov -f main.tf
6
7# Сканирование с фильтрацией по framework
8checkov -d . --framework terraform
9
10# Сканирование с выводом в JSON
11checkov -d . --output json
12
13# Сканирование с определенным уровнем severity
14checkov -d . --check LOW,MEDIUM,HIGH,CRITICAL
Когда использовать Checkov
- Infrastructure as Code проекты
- Multi-cloud развертывания
- Compliance требования (SOC 2, PCI DSS)
- DevSecOps практики
- Shift-left security подход
- Automated security testing в CI/CD
Преимущества Checkov
- Широкая поддержка — множество IaC платформ и cloud провайдеров
- Готовые правила — 1000+ встроенных security checks
- Расширяемость — легкое создание custom политик
- CI/CD friendly — простая интеграция в пайплайны
- Open Source — бесплатный и с активным сообществом
- IDE интеграция — проверки на этапе разработки
FAQ
Поддерживает ли Checkov Terraform modules?
Да, Checkov может анализировать как локальные, так и remote Terraform модули. Он рекурсивно сканирует все конфигурационные файлы.
Можно ли интегрировать Checkov с Terraform Cloud?
Да, можно использовать Checkov как pre-plan hook или интегрировать через Sentinel policies для блокировки небезопасных конфигураций.
Как создать исключения для конкретных ресурсов?
Используй inline комментарии в IaC файлах: `#checkov:skip=CKV_AWS_79:Reason for skipping` или настрой исключения в .checkov.yaml файле.