Знакомо ли вам это чувство, когда команда безопасности резко останавливает ваше развертывание, и не потому, что код хромает, а потому, что какой-то захудалый пакет в базовом образе контейнера истошно сигнализирует о CVE? Это цифровой эквивалент появления на black-tie гала-вечеринке в гавайской рубашке — вроде бы и одет, но вряд ли попадешь в список приглашенных.
Это не гипотетика. Всего в ноябре прошлого года команда, самостоятельно хостившая Langfuse — отличную платформу для observability LLM, — уперлась в эту самую стену, готовя базу данных ClickHouse для продакшена на Kubernetes. Они загрузили свой образ ClickHouse в AWS ECR, и БАМ! Три критические уязвимости, не в самом ClickHouse, а притаившиеся в базовом образе. Их команда безопасности, благослови их бдительность, увидела отчет сканера и поставила категорическое “нет”.
Этот материал — о том, как Docker Hardened Images (DHI) собирается вытащить нас из этого вечного состояния развертывающего лимба. Мы углубимся в подход DHI, взяв повсеместно используемый образ базы данных ClickHouse в качестве главного примера.
ClickHouse: Аналитический гигант, который нельзя игнорировать
Для начала, пара слов о самом ClickHouse. Если вы занимаетесь серьезной аналитикой в больших масштабах, вы знаете ClickHouse. Эта open-source колоночная база данных — настоящий монстр, перемалывающий миллиарды строк и выдающий результаты за миллисекунды. Забудьте о традиционных построчных базах данных; ClickHouse создан для скорости. Компании вроде Cloudflare, Uber и Spotify используют его в продакшене, а более 100 миллионов скачиваний с Docker Hub сделали его де-факто инфраструктурным выбором для всех, кому нужен серьезный аналитический пропуск. Однако проблемой всегда была его стандартная настройка безопасности — созданная для удобства разработчиков, а не для той железной защиты, которую требуют корпоративные продакшен-среды. И здесь кроется корень нашей текущей проблемы.
Невидимый мусор: Почему базовый образ — настоящий злодей
Стандартный образ clickhouse/clickhouse-server, при всей его полезности, построен на полной базе Ubuntu 22.04. Ubuntu — отличная ОС, но для такой узкоспециализированной базы данных, как ClickHouse, это как везти на пикник полностью укомплектованную кухню. Он поставляется с целым набором вещей, которые ClickHouse абсолютно не нужны: Perl, пакетный менеджер (apt), бесчисленные системные утилиты и каскад транзитивных зависимостей. Многие из этих пакетов уже давно не получали бэкпортированных исправлений от апстрим-мейнтейнеров.
ClickHouse, в своем сфокусированном гении, едва ли прикасается к большинству из них. Однако CVE в этих пакетах — неоспоримая реальность. Сканеры вроде Trivy и Grype услужливо их помечают. AWS ECR, в своей беспристрастной логике, не может отличить уязвимую библиотеку, которая просто лежит без дела, от той, которая активно используется. Ваша команда безопасности видит красные флажки и, совершенно справедливо, блокирует развертывание. Они делают свою работу, вооружившись информацией от сканера.
Конечно, инстинкт подсказывает начать героическую оборону: составлять витиеватые документы об исключениях рисков, писать эссе о том, почему ваша конкретная рабочая нагрузка никогда не прикоснется к этой древней библиотеке wget с неисправленным CVE-2021-31879. Это изнурительный, трудоемкий процесс. Единственное истинное решение, которое позволяет обойти этот кафкианский кошмар, — это просто удалить эти ненужные пакеты. И именно это, друзья мои, ставит себе целью Docker Hardened Images (DHI).
DHI: Минимализм до самых основ
Итак, что же DHI на самом деле делает, чтобы заслужить свои лавры? Все начинается с обманчиво простого, но глубоко влиятельного вопроса: что на самом деле нужно базе данных для работы? Вместо того чтобы начинать с обширной, многофункциональной базы Ubuntu и надеяться, что количество CVE останется управляемым, DHI тщательно поставляет только то, что требуется ClickHouse. Все остальное? Прочь.
Самое немедленное и, честно говоря, блестящее последствие этого минималистского подхода? Отсутствие apt во время выполнения. Представьте, что атакующий пробил ваш контейнер. Без встроенного пакетного менеджера его возможности по установке вредоносных инструментов или созданию постоянных точек опоры значительно ограничены. Сетевые утилиты вроде curl и wget? Они также удалены по тем же соображениям безопасности.
Но DHI не останавливается на простом удалении очевидных векторов атаки. Оно идет глубже, выявляя и устраняя библиотеки, которые, хотя, возможно, и используются базовой ОС или другими инструментами, совершенно не имеют отношения к основной функции ClickHouse. Дело не только в уменьшении размера образа (хотя это приятный бонус). Это о радикальном сокращении поверхности атаки, что делает ваши развертывания по своей сути более устойчивыми и, что крайне важно, развертываемыми в строгих корпоративных средах безопасности.
Представьте себе это так: стандартный образ — это полностью меблированный дом. В нем есть все, что вам может понадобиться, плюс много того, что не нужно. Образ DHI? Это тщательно спроектированное, минималистичное убежище, построенное только из основных компонентов для комфортной жизни. И для команд безопасности такое убежище выглядит гораздо привлекательнее.
Стандартный образ
clickhouse/clickhouse-serverпостроен на полной базе Ubuntu 22.04. База поставляется с множеством вещей, которые ClickHouse не нужны, таких как Perl, системные утилиты, самapt, и десятки транзитивных зависимостей, существующих в образе просто потому, что Ubuntu принесла устаревшие пакеты, и во многих случаях мейнтейнеры Ubuntu решают не делать бэкпорты исправлений от апстрима.
Эта неумолимая ориентация на необходимость означает, что образы DHI могут составлять лишь малую долю от размеров их обычных аналогов. Меньшие образы означают более быстрые скачивания, более быстрое развертывание и уменьшенный след для потенциальных уязвимостей. Это игра на эффективность, которая также оказывается мастерским ходом в области безопасности.
Последствия здесь огромны. Для разработчиков это означает меньше времени, потраченного на борьбу с исключениями безопасности, и больше времени на создание функций. Для команд безопасности — более чистые отчеты и большая уверенность в развернутых приложениях. Это симбиотические отношения, наконец-то обретающие гармонию, и все благодаря более разумному подходу к построению образов.
Почему это важно: Сдвиг платформы на горизонте
Речь идет не просто об усовершенствованном образе ClickHouse. Это сигнал, маяк, освещающий фундаментальный платформенный сдвиг в нашем представлении о развертывании ПО. Годами мы действовали по предположению, что уровень базовой ОС — это необходимое зло, фундаментальный компонент, который мы в основном принимаем как есть. Распространенность CVE в этих фундаментальных слоях стала постоянным, низкочастотным гулом тревоги в мире DevOps.
DHI и философия, которую он олицетворяет, бросают вызов этому предположению в лоб. Он утверждает, что базовый образ — это не статичная сущность, которую нужно терпеть, а податливый компонент, который может и должен быть агрессивно оптимизирован под конкретное приложение, которое он хостит. Это AI-мышление, примененное к инфраструктуре — выявление основной потребности и безжалостное устранение всего остального.
Мы переходим от модели, где мы принимаем технический долг наших базовых образов, к модели, где мы его устраняем. Это не просто незначительное улучшение; это скачок, сравнимый с переходом от монолитных приложений к микросервисам, или от локальных серверов к облачным архитектурам. Это фундаментальное изменение в нижележащей подложке, на которой строятся и развертываются наши приложения.
Будущее — стройное и эффективное
По мере того как AI продолжает проникать во все слои нашего технологического стека, мы будем видеть больше подобной интеллектуальной оптимизации. Представьте себе AI-системы сборки, которые динамически удаляют ненужные компоненты из любого образа приложения, адаптированные к его конкретным потребностям во время выполнения и политикам безопасности. DHI для ClickHouse — это мощный, осязаемый пример этого будущего, разворачивающегося сегодня. Это будущее, где безопасность — не запоздалая мысль, а неотъемлемое свойство самой инфраструктуры. Будущее, где ваши развертывания не блокируются; они проходят гладко, надежно и готовы ко всему, что им подбросит мир. И для любого разработчика или инженера Ops — это будущее, которое стоит того, чтобы им восхищаться.
**
🧬 Связанные инсайты
- Читать далее: Сканирование SBOM в HCP Packer: уязвимости обнаружены за секунды
- Читать далее: Самодельный облачный файрвол останавливает DDoS-атаки в реальном времени
Часто задаваемые вопросы**
Что такое Docker Hardened Image (DHI)? DHI — это образ контейнера, собранный с минимальным набором компонентов, необходимых для работы приложения, что значительно уменьшает его поверхность атаки и потенциал для уязвимостей.
Будут ли образы DHI медленнее запускаться? Как правило, нет. Удаляя ненужный оверхед и уменьшая размер образа, образы DHI часто могут запускаться и скачиваться быстрее, чем громоздкие традиционные образы.
Это только для ClickHouse? DHI — это методология, которую можно применять ко многим приложениям, хотя эта статья конкретно фокусируется на ее реализации для ClickHouse.