TL;DR
- Сканирование compliance должно происходить в CI до деплоймента, а не во время ежегодных аудитов
- Checkov, KICS и Trivy предоставляют готовые политики, mapped к SOC2, HIPAA, PCI-DSS и CIS benchmarks
- Ошибка #1: запускать compliance инструменты вручную вместо автоматизированных CI gates
Подходит для: Команд в регулируемых отраслях (здравоохранение, финансы) или стремящихся к сертификации SOC2 Пропустите, если: Вы создаёте внутренние инструменты без требований compliance Время чтения: 10 минут
Ваш SOC2 аудитор просит доказательства того, что у всех S3 buckets включено шифрование. Вы тратите три дня на извлечение логов CloudTrail, сопоставление с состоянием Terraform и построение таблицы. В следующем квартале спрашивают снова. И снова.
Это театр compliance — реактивный сбор доказательств вместо проактивного enforcement’а. В 2026 году compliance-as-code означает, что ваша инфраструктура не может быть задеплоена, если не соответствует контролям. Доказательства аудита — это история вашего CI pipeline.
Настоящая Проблема
Традиционные подходы к compliance не работают для IaC, потому что они разработаны для статических сред. Аудитор проверяет вашу AWS консоль раз в год. Но ваш Terraform деплоит 50 раз в день. К моменту аудита инфраструктура изменилась тысячи раз.
Shift-left подход означает:
- Compliance checks запускаются на каждом pull request
- Несоответствующие ресурсы не могут быть задеплоены (не просто помечены)
- Доказательства автоматически генерируются и сохраняются
- Drift от compliant состояния триггерит алерты
Это не о том, чтобы быстрее проходить аудиты — это о том, чтобы быть непрерывно compliant, а не compliant в точке времени.
Инструменты Сканирования Compliance для IaC
Три open-source инструмента доминируют в сканировании compliance для IaC в 2026:
| Инструмент | Разработчик | Frameworks | Ключевая Сила |
|---|---|---|---|
| Checkov | Palo Alto Networks | Terraform, CloudFormation, K8s, ARM | Готовые маппинги SOC2/HIPAA/PCI |
| KICS | Checkmarx | 15+ форматов IaC | Кастомизация на основе запросов |
| Trivy | Aqua Security | IaC + containers + SBOM | Унифицированный pipeline сканирования |
Все три поддерживают CIS Benchmarks, но Checkov имеет наиболее явные маппинги compliance frameworks из коробки.
Checkov для Compliance
Встроенные политики Checkov напрямую mapped к стандартам compliance. Запуск сканирования с фокусом на SOC2:
# Сканировать директорию Terraform для SOC2-релевантных проверок
checkov -d ./terraform --framework terraform --check CKV_AWS_19,CKV_AWS_20,CKV_AWS_21
# Или использовать фильтр compliance framework
checkov -d ./terraform --compliance-framework soc2
# Output как JUnit XML для интеграции с CI
checkov -d ./terraform -o junitxml > compliance-report.xml
Ключевой инсайт в том, что Checkov mapped checks к специфическим compliance контролям:
CKV_AWS_19 → SOC2 CC6.1 (Шифрование at rest)
CKV_AWS_20 → SOC2 CC6.6 (Публичный доступ S3)
CKV_AWS_21 → HIPAA 164.312(e)(2) (Шифрование in transit)
Обратите внимание, как один ресурс может удовлетворять нескольким frameworks. Ваш check шифрования S3 покрывает SOC2, HIPAA и PCI-DSS одновременно.
Кастомные Compliance Политики
Готовые политики покрывают типичные случаи, но у вашей организации, вероятно, есть специфические требования. Checkov поддерживает кастомные политики на Python или YAML:
# custom_policies/require_cost_center_tag.yaml
metadata:
id: "CUSTOM_AWS_1"
name: "Убедиться что все ресурсы имеют тег cost_center"
category: "GOVERNANCE"
guideline: "Все ресурсы должны иметь тег cost_center для атрибуции биллинга"
definition:
cond_type: "attribute"
resource_types:
- "aws_instance"
- "aws_s3_bucket"
- "aws_rds_instance"
attribute: "tags.cost_center"
operator: "exists"
Запустите с директорией кастомных политик:
checkov -d ./terraform --external-checks-dir ./custom_policies
Для сложной логики Python политики предлагают больше гибкости:
from checkov.terraform.checks.resource.base_resource_check import BaseResourceCheck
from checkov.common.models.enums import CheckResult, CheckCategories
class RequireApprovedAMI(BaseResourceCheck):
def __init__(self):
name = "Убедиться что EC2 использует approved AMI из внутреннего registry"
id = "CUSTOM_AWS_2"
supported_resources = ["aws_instance"]
categories = [CheckCategories.GENERAL_SECURITY]
super().__init__(name=name, id=id, categories=categories,
supported_resources=supported_resources)
def scan_resource_conf(self, conf):
ami = conf.get("ami", [""])[0]
approved_prefixes = ["ami-internal-", "ami-approved-"]
if any(ami.startswith(prefix) for prefix in approved_prefixes):
return CheckResult.PASSED
return CheckResult.FAILED
check = RequireApprovedAMI()
Интеграция CI/CD
Сканирование compliance должно блокировать деплойменты, а не просто репортить. Вот workflow GitHub Actions:
name: Compliance Gate
on:
pull_request:
paths:
- 'terraform/**'
jobs:
compliance-scan:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Run Checkov
uses: bridgecrewio/checkov-action@v12
with:
directory: terraform/
framework: terraform
output_format: cli,sarif
output_file_path: console,results.sarif
soft_fail: false # Упасть при нарушениях
skip_check: CKV_AWS_999 # Известное исключение
- name: Upload SARIF
if: always()
uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
soft_fail: false критичен — он гарантирует, что несоответствующие PR не могут быть смержены.
Маппинг Контролей к Доказательствам
Аудиторам нужны доказательства, а не output инструментов. Создайте compliance матрицу, которая mapped ваши CI checks к специфическим контролям:
| ID Контроля | Требование | Инструмент | ID Check | Расположение Доказательств |
|---|---|---|---|---|
| SOC2 CC6.1 | Шифрование at rest | Checkov | CKV_AWS_19 | Логи GitHub Actions |
| HIPAA 164.312(a)(1) | Контроли доступа | Checkov | CKV_AWS_40 | Логи GitHub Actions |
| PCI-DSS 3.4 | Хранимые данные карт | Custom | CUSTOM_PCI_1 | Хранилище артефактов |
Сохраняйте результаты сканирования compliance как build артефакты с retention, соответствующим вашему циклу аудита (обычно 1-3 года для SOC2).
AI-Ассистированные Подходы
Написание кастомных compliance политик требует понимания как регуляции, так и структуры IaC ресурсов. AI инструменты здесь превосходны.
Что AI делает хорошо:
- Перевод регуляторного текста в правила политик Checkov/KICS
- Идентификация каких IaC ресурсов релевантны для специфических контролей
- Генерация тест-кейсов для кастомных политик
- Объяснение почему ресурс не прошёл конкретный check
Что всё ещё требует людей:
- Интерпретация неоднозначного регуляторного языка
- Решения о том, какие контроли применимы к вашей специфической архитектуре
- Одобрение исключений и документирование компенсирующих контролей
- Ревью AI-сгенерированных политик на корректность
Полезный промпт:
Мне нужна кастомная политика Checkov (Python), которая enforce'ит:
- Все RDS инстансы должны иметь deletion_protection включённым
- Исключение: инстансы с тегом "environment=development"
- Mapped к контролю SOC2 CC6.1 (контроли логического доступа)
Включи юнит-тесты с pytest
Когда Это Не Работает
Сканирование compliance имеет ограничения:
Ложное чувство безопасности: Прохождение всех checks не означает, что вы защищены. Compliance frameworks — это минимальные baselines, не комплексная безопасность.
Gaps покрытия инструментов: Ни один сканер не покрывает каждый тип ресурса. Новые AWS сервисы могут не иметь политик месяцами.
Runtime vs deploy-time: Эти инструменты проверяют что будет задеплоено, а не что сейчас работает. Вручную изменённый ресурс обходит все gates.
Управление исключениями: Каждая организация накапливает исключения. Без governance ваше “compliant” состояние становится швейцарским сыром.
Рассмотрите дополнительные подходы:
- Policy as Code с OPA/Sentinel для кастомного enforcement
- AWS Config / Azure Policy для runtime compliance
- Cloud Security Posture Management (CSPM) для непрерывного мониторинга
Фреймворк Принятия Решений
Используйте Checkov когда:
- Вам нужны явные маппинги SOC2/HIPAA/PCI
- Python-based кастомные политики подходят навыкам вашей команды
- Вы хотите самую большую библиотеку готовых политик
Используйте KICS когда:
- Вам нужно максимальное покрытие форматов IaC (15+ форматов)
- Кастомизация на основе запросов соответствует вашему workflow
- Вы уже используете Checkmarx для SAST
Используйте Trivy когда:
- Вы хотите унифицированное сканирование containers + IaC
- Требуется генерация SBOM
- Вы в Kubernetes-heavy окружении
Измерение Успеха
| Метрика | До | После | Как Отслеживать |
|---|---|---|---|
| Время подготовки к аудиту | 2-3 недели | 1-2 дня | Залогированные часы |
| Нарушения compliance в проде | Неизвестно | 0 | CSPM dashboard |
| Время на исправление finding | Дни | Часы | Timestamps merge PR |
| Покрытие политиками | 0% | 90%+ ресурсов | Checkov –list |
Тревожные признаки что не работает:
- Команды запрашивают слишком много исключений
- Сканирование compliance занимает >10 минут (блокирует velocity)
- Аудиторы отклоняют CI логи как доказательства
- Результаты сканирования игнорируются из-за шума
Что Дальше
Начните с одного compliance framework. Если вы стремитесь к SOC2:
- Запустите
checkov -d ./terraform --compliance-framework soc2 --listчтобы увидеть применимые checks - Включите топ-10 наиболее severe checks как блокирующие
- Документируйте исключения с компенсирующими контролями
- Постепенно расширяйте покрытие каждый спринт
- Представьте CI pipeline как audit evidence trail
Цель — сделать compliance побочным эффектом хороших инженерных практик, а не отдельным workstream.
Связанные статьи:
- Policy as Code Testing: OPA vs Sentinel
- Тестирование Infrastructure as Code
- Управление секретами в CI/CD тестировании
- GitOps воркфлоу для QA и тестирования
Внешние ресурсы:
Официальные ресурсы
See Also
- Тестирование соответствия для Infrastructure as Code: Полное руководство - Освойте тестирование соответствия для IaC с автоматизированной…
- Лучшие Практики Тестирования Pulumi: Юнит, Property и Интеграционные Тесты для IaC - Освойте тестирование Pulumi с юнит-тестами, property-тестами и…
- Валидация Тегов Облачных Ресурсов: Автоматизированное Тестирование Соответствия - Узнайте, как валидировать теги облачных ресурсов в AWS, Azure и…
- Тестирование и безопасность Docker-образов: Полное руководство по сканированию уязвимостей контейнеров - Освойте безопасность Docker-образов с Trivy, Snyk и Grype….
