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Ключевая Сила
CheckovPalo Alto NetworksTerraform, CloudFormation, K8s, ARMГотовые маппинги SOC2/HIPAA/PCI
KICSCheckmarx15+ форматов IaCКастомизация на основе запросов
TrivyAqua SecurityIaC + 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 restCheckovCKV_AWS_19Логи GitHub Actions
HIPAA 164.312(a)(1)Контроли доступаCheckovCKV_AWS_40Логи GitHub Actions
PCI-DSS 3.4Хранимые данные картCustomCUSTOM_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 в продеНеизвестно0CSPM dashboard
Время на исправление findingДниЧасыTimestamps merge PR
Покрытие политиками0%90%+ ресурсовCheckov –list

Тревожные признаки что не работает:

  • Команды запрашивают слишком много исключений
  • Сканирование compliance занимает >10 минут (блокирует velocity)
  • Аудиторы отклоняют CI логи как доказательства
  • Результаты сканирования игнорируются из-за шума

Что Дальше

Начните с одного compliance framework. Если вы стремитесь к SOC2:

  1. Запустите checkov -d ./terraform --compliance-framework soc2 --list чтобы увидеть применимые checks
  2. Включите топ-10 наиболее severe checks как блокирующие
  3. Документируйте исключения с компенсирующими контролями
  4. Постепенно расширяйте покрытие каждый спринт
  5. Представьте CI pipeline как audit evidence trail

Цель — сделать compliance побочным эффектом хороших инженерных практик, а не отдельным workstream.


Связанные статьи:

Внешние ресурсы:

Официальные ресурсы

See Also