Checkov SAST для IAC
19 января 2026 г.·216 views

🛠 Checkov SAST для IAC

Салют,

Давай продолжим с тобой смотреть дальше в сторону инструментов и сегодня мы поговорим про Антона Павл.. Checkov (doc):

Это инструмент для статического анализа (SAST) инфраструктуры как кода (IaC), который сканирует конфигурации на предмет ошибок безопасности и соответствия стандартам до их развертывания. Open-source (Apache 2.0). Форматы отчетов: CLI, JSON, JUnit XML, GitHub Failed Only, GitLab SAST, SARIF, CSV, CycloneDX.

Фишки

• Анализирует Terraform, CloudFormation, Kubernetes‑манифесты, Dockerfile и другие инфраструктурные файлы на ошибки конфигурации

• Подходит для автоматической проверки Docker/IaC в пайплайнах, чтобы не пропускать небезопасные настройки в образах и инфраструктуре

• Может использоваться для быстрой проверки конфигураций перед коммитом, чтобы исключить базовые misconfiguration

• SARIF → GitHub Security, GitLab SAST

• JSON → DefectDojo, Jira

• Поддержка как атрибутных (на Python), так и графовых (на YAML) политик для анализа взаимосвязей ресурсов

Команды

pip install checkov

# Сканирование директории

checkov -d /path/to/terraform/code

# Запуск только определенных проверок (по ID или severity)

checkov -d . --check CKV_AWS_20,CKV_AWS_57

checkov -d . --check HIGH

# Пропуск определенных проверок

checkov -d . --skip-check CKV_AWS_20

# Вывод в формате JUnit XML (для CI/CD)

checkov -d . -o junitxml > checkov.xml

# Сканирование с загрузкой внешних Terraform модулей

checkov -d . --download-external-modules true

# Подавление конкретной проверки в коде (inline comment) checkov:skip=CKV_AWS_20

resource "aws_s3_bucket" "example" {

bucket = "my-bucket"

acl = "private"

}

Встраивание

stage('Checkov') {

steps {

script {

docker.image('bridgecrew/checkov:latest').inside("--entrypoint=''") {

unstash 'terragoat'

try {

sh '''

checkov -d . --use-enforcement-rules -o cli -o junitxml \

--output-file-path console,results.xml \

--repo-id example/terragoat --branch master

'''

junit skipPublishingChecks: true, testResults: 'results.xml'

} catch (err) {

junit skipPublishingChecks: true, testResults: 'results.xml'

throw err

}

}

}

}

options {

preserveStashes()

timestamps()

}

}

Пример политик

enforcement_rules:

- name: "prod-enforcement"

description: "Строгие политики для прод-веток: блокируем Critical/High, предупреждаем по Medium."

is_default: true

criteria:

provider: "terraform" # к каким сканам применяем

filter:

# пример — применять к репо terragoat в ветке master/main

repo_id: "example/terragoat"

branches:

- "master"

- "main"

rules:

- rule_id: "CKV_AWS_*" # все AWS-политики

soft_fail_threshold: "MEDIUM"

hard_fail_threshold: "HIGH"

- rule_id: "CKV_K8S_*" # все политики по Kubernetes

soft_fail_threshold: "MEDIUM"

hard_fail_threshold: "HIGH"

- rule_id: "CKV_SECRET_*" # поиск секретов

soft_fail_threshold: "LOW"

hard_fail_threshold: "MEDIUM"

- name: "dev-relaxed"

description: "Более мягкие политики для dev/feature-веток."

is_default: false

criteria:

provider: "terraform"

filter:

branches:

- "develop"

- "feature/*"

rules:

- rule_id: "CKV_AWS_*"

soft_fail_threshold: "HIGH" # Medium только как инфо

hard_fail_threshold: "CRITICAL"

- rule_id: "CKV_K8S_*"

soft_fail_threshold: "HIGH"

hard_fail_threshold: "CRITICAL"

- rule_id: "CKV_SECRET_*"

soft_fail_threshold: "MEDIUM"

hard_fail_threshold: "HIGH"

Итого: что бы тебе самому окунуться в него будет круто потыкать вот эту лабку, там ты сразу потыкаешь в Semgrep, который описывал вот тут и SCA Dependency Check.

#toolchain #sast #appsec #course #sca #sbom #containersecurity #reco #techsolution

#toolchain#sast#appsec#course#sca#sbom#containersecurity#reco#techsolution
Открыть в Telegram