Secure Docker
Когда речь заходит про безопасность docker, то обычно сразу всплывает всякий сбор логов, мониторинг и “надо было ставить линукс” “давайте запихаем агент Wazuh”.
Однако, как с вешалки начинается театр, так жизненный путь контейнера начинается с dockerfile. C них и начнем.
Из простого: какой-нибудь линтер: Для ленивых -fromlatest.io Поправить синтаксис, теги, убрать всякий deprecated и вообще держать всё в удобочитаемом виде дело важное.
hadolint
Локальный линтер, который можно запускать как в установленном виде, так и из докера. Может проверять как локальные докерфайлы, так и из registry. Проверки репозитория нет, так что при необходимости придётся решать это костылями.
Сканеры уязвимости:
trivy
trivy - простой, но хороший сканер уязвимостей. Находит уязвимые версии софта в зависимостях, секреты, мисконфиги. Из удобств: можно использовать как standalone сканирование, например проверить репозиторий целиком, так и интегрировать в CI/CD (Jenkins, GitLab CI, GitHub Actions). Есть плагин для 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 засунуть интегрировать.