Docker: проверка контейнеров на безопасность
Насколько безопасен Docker? В первые дни, ответ на этот вопрос у профессионалов был бы “не очень”. По справедливости, когда Docker впервые был запущен в 2013 году, ему определенно не хватало надежных функций безопасности и инструментов, позволивших бы ему обеспечить безопасность контейнеров на достаточном для Enterprise предприятий уровне.
С 2013 года многое изменилось. С одной стороны, сообщество Docker в настоящее время прилагает больше количество усилий по укреплению безопасности своего решения. А с другой, в зависимости от того, как именно организация намерена использовать контейнеры Docker, существуют дополнительные инструменты и подходы к проектированию, предназначенные для того, чтобы сделать использование Docker еще более безопасным.
Далее мы посмотрим на текущее состояние дел с безопасностью Docker, а также на то, что пользователи могут сделать, чтобы убедиться, что Docker является максимально безопасным в среде Enterprise.
Специализированные средства обеспечения безопасности Docker
Как только выросла популярность Docker, так сразу же и начали появляться инструменты для обеспечения безопасности контейнеров.
Одним из важных инструментов являются сканеры образов. На данный есть несколько проектов: Clair от CoreOS и Docker Security Scanning, которые интегрированы в Docker Hub и могут проверить наличие уязвимостей в образах автоматически, что экономит массу времени. Они могут также отправляют уведомления по электронной почте, когда уязвимость обнаружена и самостоятельно ищут доступные исправления.
Есть еще один пакет для обеспечения безопасности контейнеров — Twistlock. Он обеспечивает всесторонний подход к этому вопросу и охватывает множество областей безопасности. Он не только защищает контейнеры приложений, но и обеспечивает мониторинг, анализ и своевременное реагирование на угрозы. Twistlock является одним из немногих коммерчески доступных решений, которое сосредоточилось исключительно на обеспечении безопасности Docker.
Усилия Docker сообщества по защите контейнеров
Docker выпустил ряд обновлений для системы безопасности в течение последних нескольких лет, что решило множество вопросов безопасности, которые не позволяли предприятиям решиться использовать его в 2013 году. Эти разработки позволили облегчить использование Docker среди Enterprise и обеспечили стабильный рост популярности этой технологии.
Основные вопросы в области безопасности, которые отталкивали от Docker в первые дни были namespaces и cgroups. Namespaces обеспечивают наиболее простую форму изоляции между контейнерами, предотвращая их взаимодействия друг с другом. Namespaces дают возможность использовать различные привилегии, которые могут быть назначены различным пользователям.
Cgroups же ограничивают количество ресурсов, которые разрешено использовать каждому отдельному контейнеру. Они дают ограничить доступность к ресурсам, таким как память и процессор для каждого контейнера. К контейнерам можно применить жесткие ограничения, чтобы быть уверенным в том, что процессы будут убиты, если они начинают требовать слишком много ресурсов. Эта мера обеспечивает защиту от эксплуатации от внешнего источника.
В сообществе Docker также разработали Docker Bench, сценарий, который может проверить контейнеры и конфигурации безопасности своих хостов на соответствие с набором лучших практик, предоставленных Center for Internet Security.
Docker Swarm по состоянию на версию Docker 1.12 встроенный в Docker, также предоставляет некоторые функции безопасности. Он обеспечивает узлы, на которых установлен Docker поддержкой сертификатов Transport Layer Security (TLS) и шифрует обмен данными между ними.
И, наконец, поддержка в Docker функций доверия к содержимому контейнеров — очень элегантное решение обеспечения возможности проверки достоверности содержимого контейнеров.
Использование Docker от поставщиков услуг
Еще один способ увеличить безопасность Docker (особенно для организаций без большого опыта работы с Docker) — это использовать управляемые хостинг платформы для запуска Docker контейнеров. Данный подход обеспечивает удобство упрощенного управления и некоторые встроенные функции безопасности (в зависимости от поставщика конечной услуги).
У самого Docker есть коммерческий продукт Docker Datacenter (или Docker cloud product), который по заявлениям разработчиков является лучшим способом для запуска контейнеров, принадлежащих предприятию, если есть необходимость обеспечить дополнительную защиту Docker контейнеров, разместив их в ЦОД организации и закрыв их брандмауэром, управляемым самой организацией.
Выводы
В целом, глядя на то, как Docker улучшился за последние годы, можно смело сказать, что он значительно более безопасен сегодня по сравнению с тем, каким он был впервые увидя свет. Вообще говоря, опасения на тему безопасности Docker на ранних этапах его развития были разумными, однако, в настоящее время в Docker реализован целый ряда мер по обеспечению безопасности, которые делают его готовым для любого типа Enterprise предприятия.