Статья XDA в этом месяце раскрыла то, что большинство домовых лабораторий узнают на собственном опыте: рабочий файл Docker Compose не является безопасным файлом Docker Compose. Порты привязываются к 0.0.0.0 вместо 127.0.0.1, сервисы базы данных оказываются на одном публичном мосту с обратным прокси, а панели администратора поставляются с учетными данными по умолчанию, которые никто не помнил об изменении. Решение — это сканер, который читает файл compose, образ и конфигурацию контейнера вместе и указывает на то, что открыто. Мы протестировали семь инструментов безопасности Docker Compose в Windows, macOS и Linux на реальном стеке домовой лаборатории, сосредоточив внимание на проверках, которые выявляют фактические неправильные конфигурации, а не шум.
На что следует обратить внимание в сканере безопасности Docker Compose
Анализ с учетом Compose — это первая проверка. Сканер, который только читает Dockerfile, пропустит привязки портов, топологию сети и блоки окружения, которые находятся в docker-compose.yml. Правильный выбор читает оба файла и понимает разницу между expose и ports, сетью в режиме хоста и привязанными томами, которые достигают /etc или /var/run/docker.sock.
Данные об уязвимостях должны быть актуальными. Это означает ленту CVE, которая обновляется ежедневно, покрытие как дистрибутивных пакетов, так и зависимостей на уровне языка, и способ определить, какие находки действительно можно использовать в работающем контейнере, вместо того чтобы просто присутствуют в образе. Инструмент, который всплывает каждым CVE независимо от контекста, заполняет домовую лабораторию предупреждениями и игнорируется через неделю.
Вывод, удобный для CI — это то, что превращает одноразовый скан в прочную проверку. Выход JSON или SARIF, коды выхода, отличные от нуля, для находок выше выбранной серьезности, и встроенные комментарии подавления в файле compose позволяют одному и тому же инструменту жить в перехватчике git pre-commit, задании GitHub Actions или ночной задаче cron. Локально-первая операция важна для домовой лаборатории, без телеметрии, без принудительной учетной записи облака.
Быстрое сравнение
| Приложение | Лучше всего для | Платформы | Бесплатный план | Начальная цена | Оценка |
|---|---|---|---|---|---|
| Trivy | Универсальный сканер образов и compose | Windows, macOS, Linux | Да | Бесплатно | 4.8 |
| Docker Bench for Security | Аудит CIS хоста и демона | Linux, macOS | Да | Бесплатно | 4.6 |
| Grype | Быстрое сканирование уязвимостей образа | Windows, macOS, Linux | Да | Бесплатно | 4.6 |
| Dockle | Линтер лучших практик образа | Windows, macOS, Linux | Да | Бесплатно | 4.5 |
| Hadolint | Линтер Dockerfile с правилами безопасности | Windows, macOS, Linux | Да | Бесплатно | 4.6 |
| Checkov | Сканер политики IaC и compose | Windows, macOS, Linux | Да | Бесплатно | 4.6 |
| Sysdig CLI Scanner | Глубокое сканирование образа с учетом времени выполнения | Windows, macOS, Linux | Пробная версия | Скромно для коммерческого использования | 4.5 |
1. Trivy, первый проход по умолчанию для любого стека compose
Trivy — это инструмент, на который большинство домовых лабораторий приземляются в первую очередь, и он заслуживает этого места. Он сканирует образы контейнеров на уязвимости ОС и языка, читает Dockerfile и файлы compose на предмет неправильных конфигураций и теперь включает сканирование секретов, которое выявляет ключ API, зафиксированный в файле env. Одиночный запуск trivy config docker-compose.yml для стека домовой лаборатории производит понятный отчет менее чем за минуту.
Обновление базы данных выполняется при каждом сканировании по умолчанию, что поддерживает актуальность находок без задачи cron. Режимы вывода охватывают человеческую таблицу, JSON, SARIF и SBOM CycloneDX, а коды выхода работают в конвейере CI. Это бесплатно и открыто, работает как один двоичный файл и остается полезным задолго после первоначального сканирования.
- Платформа: Windows, macOS, Linux
- Преимущества: сканирование образа и IaC, обнаружение секретов, выход SBOM, установка одного двоичного файла
- Цена: бесплатно и открыто
- Идеально для: первого сканера, установленного в свежую домовую лабораторию
- Загрузка: trivy.dev
2. Docker Bench for Security, аудит CIS для хоста и демона
Docker Bench for Security — это скрипт shell, который проходит по тесту Docker Benchmark CIS для работающего хоста. Он проверяет конфигурацию демона, контейнеры, которые в настоящее время запущены, и образы, уже находящиеся на диске, в сравнении с примерно сотней задокументированных элементов управления и выводит отчет со статусами pass, warn, info и note.
Это не парсер compose, но это самый быстрый способ поймать неправильные конфигурации на уровне хоста, которые сканер compose не может увидеть: демон Docker, прослушивающий TCP без TLS, контейнеры --privileged, отсутствие no-new-privileges, значения по умолчанию драйвера логирования и разрешения файлов на /etc/docker. Запустите его один раз в месяц на любом хосте, на котором работает публичный сервис, и закрепите результаты на вики.
- Платформа: Linux, macOS (bash)
- Преимущества: проверки, согласованные с CIS, охват хоста и демона, выход в виде простого текста и JSON
- Цена: бесплатно и открыто
- Идеально для: квартального аудита самого хоста Docker
- Загрузка: github.com/docker/docker-bench-security
3. Grype, быстрое сканирование уязвимостей образа в сочетании с Syft
Grype — это открытый сканер уязвимостей от Anchore. Он читает образ напрямую или SBOM, произведенный Syft и возвращает список известных CVE для установленных пакетов и зависимостей языка. Сканирование выполняется за считанные секунды, потому что Grype поставляется с локальной базой данных уязвимостей и обновляется по расписанию.
Причина его использования вместе с Trivy — это охват. Trivy шире; Grype часто выявляет пакеты на уровне языка, которые Trivy пропускает, особенно в образах Python и Node. На практике мы запускаем оба в одном конвейере и не проходим ни один критический вывод. Grype не добавляет принудительную телеметрию и не требует учетную запись, и он работает одинаково на каждой ОС рабочего стола.
- Платформа: Windows, macOS, Linux
- Преимущества: сканирование на основе SBOM, локальная база данных уязвимостей, выход JSON и SARIF, быстрые сканирования
- Цена: бесплатно и открыто
- Идеально для: второго мнения рядом с Trivy на CVE образа
- Загрузка: github.com/anchore/grype
4. Dockle, линтер лучших практик образа для этапа CI
Dockle — это линтер образа контейнера, согласованный с лучшими практиками CIS. Где Trivy сосредоточен на CVE, а Grype на уязвимостях пакетов, Dockle проверяет, как построен образ: установлен ли USER на учетную запись, не являющуюся root, поставляется ли ненужный двоичный файл sudo внутри, печены ли секреты в слои, раскрывает ли образ оболочку, которая ему не нужна. Находки сопоставляются с номерами управления CIS.
Это небольшой двоичный файл, который вписывается в задачу CI как одна команда на образ. Выход достаточно короткий для чтения, и код выхода облегчает управление. Вместе с компоном-сканером он охватывает две стороны одной проблемы: то, что проводит compose файл и что содержит образ перед тем, как он вообще будет подключен.
- Платформа: Windows, macOS, Linux
- Преимущества: линтинг образа, сопоставление CIS, короткие отчеты, простая интеграция CI
- Цена: бесплатно и открыто
- Идеально для: захвата привычек построения образа до их развертывания
- Загрузка: github.com/goodwithtech/dockle
5. Hadolint, линтер Dockerfile, который выявляет ошибки рядом с compose
Hadolint читает Dockerfile и указывает на паттерны, которые в конечном итоге становятся проблемами compose: жестко закодированные учетные данные, отсутствие тегов, apt-get install -y без очистки, оставленные root-пользователи и ADD, используемый вместо COPY. Он анализирует Dockerfile с использованием реального парсера оболочки на Haskell, поэтому выявляет проблемы, которые инструмент на основе regex пропускает.
Hadolint находится выше по течению от compose. Исправьте Dockerfile один раз, и сканер compose будет иметь меньше жалоб. Он работает как один двоичный файл, хорошо интегрируется с pre-commit или CI и добавляет одну из самых высоких проверок сигнала на каждую строку кода, которую мы измеряли на проектах домовой лаборатории.
- Платформа: Windows, macOS, Linux
- Преимущества: реальный парсер оболочки, сотни правил, выход JSON и SARIF, готовность к pre-commit
- Цена: бесплатно и открыто
- Идеально для: команд, которые пишут свои собственные Dockerfile вместо получения отправленных выше образов
- Загрузка: github.com/hadolint/hadolint
6. Checkov, политика как код между compose, Kubernetes и Terraform
Checkov — это сканер политики-как-кода, который поддерживает docker-compose, манифесты Kubernetes, Terraform, Helm и дюжину других форматов IaC. На файле compose он указывает на открытые сокеты демона, контейнеры root, режим сети хоста, отсутствие ограничений ресурсов и публичные привязки портов. Политики поставляются с разумными значениями по умолчанию и могут быть настроены на каждый репозиторий с файлом конфигурации.
Причина выбрать его вместо инструмента одного формата — это смешивание. Домовая лаборатория, которая запускает Docker Compose сегодня, но планирует перейти на небольшой кластер k3s или Nomad завтра, получает те же проверки для обоих, и одни и те же комментарии подавления переносятся. Он работает везде, где работает Python, что охватывает каждую ОС рабочего стола.
- Платформа: Windows, macOS, Linux
- Преимущества: многоформатное покрытие IaC, пользовательские политики, комментарии подавления, выход SARIF
- Цена: бесплатно и открыто
- Идеально для: домовых лабораторий со смешанной IaC, которые хотят один механизм политики
- Загрузка: github.com/bridgecrewio/checkov
7. Sysdig CLI Scanner, более глубокий вариант, когда контекст во время выполнения имеет значение
Sysdig CLI Scanner объединяет сканирование уязвимостей с осведомленностью о времени выполнения. Он читает образ, соотносит CVE с каналом уязвимостей и, при сочетании с развертыванием Sysdig, фильтрует пакеты, действительно загруженные во время выполнения. Этот единственный фильтр часто превращает отчет о сотнях находок в короткий список дюжины.
Сканер работает как один двоичный файл на каждой ОС рабочего стола. Бесплатный уровень охватывает оценку и небольшие развертывания; коммерческое использование попадает под платный план. Для серьезной домовой лаборатории или небольшой команды, которая размещает услуги вне LAN, фильтр времени выполнения стоит установки. Для чисто приватного стека Trivy плюс Grype охватывают большую часть одного и того же наземного бесплатно.
- Платформа: Windows, macOS, Linux
- Преимущества: фильтрация с учетом времени выполнения, сканирование IaC и образа, библиотека политик, выход JSON
- Цена: бесплатный уровень для оценки и небольшого использования, платная для коммерческого развертывания
- Идеально для: команд, которые уже запускают Sysdig для безопасности времени выполнения
- Загрузка: docs.sysdig.com/en/sysdig-secure/vulnerability-management/cli-scanner
Как выбрать правильный
Ответ по умолчанию для домовой лаборатории — это Trivy. Установите его, запустите его для файла compose и исправьте то, что появится. Он охватывает CVE образа, неправильные конфигурации compose и обнаружение секретов в одном двоичном файле. Если домовая лаборатория запускает публичные услуги, добавьте Docker Bench for Security как ежемесячный аудит для хоста, поскольку сканер compose не может видеть проблемы на уровне демона.
Для команд, которые построили свои собственные образы, Hadolint выявляет ошибки на этапе Dockerfile, а Dockle выявляет те, которые выжили в построенный образ. Grype заслуживает место рядом с Trivy, когда рабочая нагрузка интенсивна на Python или Node, поскольку она, как правило, находит CVE на уровне языка, которые другой пропустил. Checkov — правильный выбор для репозитория со смешанной IaC. Sysdig CLI Scanner — это более глубокий вариант для команд, которые хотят контекст времени выполнения и готовы связать его с бэкэндом Sysdig. Укладка всех семи является чрезмерной; выберите два или три и запустите их при каждом коммите.
FAQ
Как я сканирую docker-compose.yml на предмет проблем безопасности?
Установите Trivy и запустите trivy config docker-compose.yml. Он докладывает об открытии портов, контейнеры root, установленные сокеты Docker и паттерны секретов в отчет обычного текста. Добавьте --exit-code 1 --severity HIGH,CRITICAL, чтобы не прошли конвейер CI при серьезных выводах.
Trivy лучше, чем Grype, для безопасности Docker? Они являются дополняющими, а не конкурирующими. Trivy охватывает более широкую поверхность, файлы compose, образы и IaC, в то время как Grype часто выявляет больше CVE на уровне языка в образах Python, Node и Ruby. Запуск обоих в одном конвейере выявляет больше, чем каждый один.
Какая разница между Dockle и Hadolint? Hadolint проверяет Dockerfile перед построением образа. Dockle проверяет построенный образ себя. Вместе они охватывают одну и ту же проблему с обеих сторон: плохие шаблоны построения и плохое состояние образа.
Могу ли я запускать эти инструменты без подключения в Интернет? Trivy, Grype и Sysdig CLI Scanner все поддерживают работу на отделенном воздухе путем импорта базы данных уязвимостей из зеркала. Dockle, Hadolint и Docker Bench for Security работают вне сети по умолчанию, потому что их правила запечены.
Эти сканеры работают на Windows и macOS? Да. Trivy, Grype, Dockle, Hadolint, Checkov и Sysdig CLI Scanner поставляют собственные двоичные файлы или контейнеры для Windows, macOS и Linux. Docker Bench for Security — это скрипт bash и работает на macOS и Linux; в Windows он работает внутри WSL.
Эти инструменты бесплатны для личного использования? Все семь имеют бесплатный уровень для личного и домовой лаборатории использования. Trivy, Grype, Dockle, Hadolint, Checkov и Docker Bench for Security полностью открыты. Sysdig CLI Scanner бесплатен для оценки и небольшого использования с платным планом для коммерческого развертывания.