Secure Docker

Когда речь заходит про безопасность docker, то обычно сразу всплывает всякий сбор логов, мониторинг и “надо было ставить линукс” “давайте запихаем агент Wazuh”. Однако, как с вешалки начинается театр, так жизненный путь контейнера начинается с dockerfile. C них и начнем.

Из простого: какой-нибудь линтер: Для ленивых -fromlatest.io Поправить синтаксис, теги, убрать всякий deprecated и вообще держать всё в удобочитаемом виде дело важное.

hadolint

Локальный линтер, который можно запускать как в установленном виде, так и из докера. Может проверять как локальные докерфайлы, так и из registry. Проверки репозитория нет, так что при необходимости придётся решать это костылями.

Репозиторий
Web-версия


Сканеры уязвимости:

trivy

trivy - простой, но хороший сканер уязвимостей. Находит уязвимые версии софта в зависимостях, секреты, мисконфиги. Из удобств: можно использовать как standalone сканирование, например проверить репозиторий целиком, так и интегрировать в CI/CD (Jenkins, GitLab CI, GitHub Actions). Есть плагин для VSCode.

Репозиторий
Плагин для VSCode

docker-bench-security

Набор bash скриптов для проверки безопасности конфигурации образов и контейнеров. docker-bench-security больше рассчитан на интеграцию, standalone сканирование в целом есть, но не без страданий в работе.

Могут быть проблемы с интерпритацией вывода, так как используется CIS Benchmark.

Репозиторий

dockle

И линтер, и сканер. Ищет CVE в ПО образа, проверяет корректность и безопасность конкретного образа, анализируя его слои и конфигурацию. И вообще это лучший инструмент (по словам автора).

Работает как отдельно, так и интегрируется с GitLab CI, Jenkins.

Репозиторий

И немного дополню это всё, так как только инструментами всё не решается.

CIS Benchmarks,
Best Practice
Top 20 Docker Security Best Practices

Да, кроме этого есть ещё и clair, Lynis, но первый довольно масштабный, и нужен не всем, а Lynis довольно своеобразен.

Если вы не планируете интеграцию в CI/CD, то trivy отличный вариант. А в CI/CD можно и dockle или clair засунуть интегрировать.

0%