Профиль Checkov SAST
21 января 2026 г.·207 views

🛠 Профиль Checkov SAST

Я тут начал пересобирать кастомные профили, да и мне захотелось поделиться с тобой примером под checkov, который рассмотрели. Профиль примера относится к инфра по Docker и Helm.

Цель: минимизировать поверхность атаки контейнеров, исключить хранение секретов в образах и манифестах, а также обеспечить безопасные дефолты для production-сред.

Что делаем?

• Анализируем Dockerfile и Helm-чарты как основной слой упаковки

• Фильтруем предупреждения по enforce/ skip, quiet: false

• Срабатывание в разделе enforce будем считать ошибкой пайплайна

• Для dev-веток переопределяем флагом в CI ошибки как soft-fail: true/ false

• Запрещаем автоматическое скачивание модулей и делаем меньше сетевых зависимостей - download_external_modules: false

• Формируем «белый список» security-политик - run_all_checks: false

Политика

enforce:

docker:

- CKV_DOCKER_2 # Контейнер не должен запускаться под root

- CKV_DOCKER_3 # Минимизировать лишние пакеты и слои

- CKV_DOCKER_5 # Избегать образов с тегом latest без необходимости

- CKV_DOCKER_7 # Не использовать ADD вместо COPY

- CKV_DOCKER_8 # Явно задавать non-root пользователя

- CKV_DOCKER_9 # Удалять временные файлы, кеши, package manager metadata

- CKV_DOCKER_10 # Обязательный healthcheck для оркестраторов (k8s, swarm) и SLA

- CKV_DOCKER_12 # Не хранить секреты в ENV/ ARG/ лейблах образа

- CKV_DOCKER_13 # Запрет запуска контейнера в privileged режиме

- CKV_DOCKER_14 # Ограничить Linux capabilities: drop ALL

- CKV_DOCKER_16 # read-only root filesystem

helm:

- CKV_K8S_11 # networkPolicy для контролируемого трафика между подами

- CKV_K8S_20 # spec.securityContext.privileged: false

- CKV_K8S_37 # runAsNonRoot: true, runAsUser != 0

- CKV_K8S_40 # Не хранить чувствительные данные в явном виде в values/ ConfigMap

- CKV_K8S_14 # hostNetwork/hostPID/hostIPC должны быть false

- CKV_K8S_38 # securityContext.capabilities: drop ALL, запрещены SYS_ADMIN и подобные

- CKV_K8S_22 # readOnlyRootFilesystem: true

- CKV_K8S_8 # Требовать requests/ limits для CPU и памяти

directory:

# Директория анализа

- .

file:

- vulnerable-app/Dockerfile

- docker-compose.yml

# Helm-чарты:

- helm/service/values.yaml

- helm/service/templates/deployment.yaml

# skip_check:

# - CKV_DOCKER_5 # образ тестовой среды жёстко привязан к latest (exmpl)

Пример high-level политики общей

policy:

docker:

require_non_root_user: true # USER != root

require_healthcheck: true # HEALTHCHECK

require_explicit_user: true # Указание USER

forbid_secrets_in_env: true # ENV/ARG != pswrd/ token

forbid_default_credentials: true # Запрет admin/admin и т.д.

drop_all_capabilities_by_default: true # CAP_* по минимуму

forbid_privileged: true # privileged: false

forbid_host_network: true # hostNetwork: false

prefer_read_only_rootfs: true # rootfs read-only

helm:

require_pod_security_context: true # securityContext

require_network_policies: true # networkPolicy

forbid_host_path_mounts: true # hostPath монтируется по approve-list

require_resource_limits: true # requests/limits заданы

forbid_plaintext_secrets: true # секреты не хранятся в values.yaml/ConfigMap

#toolchain #sast #appsec #course #reco #techsolution

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