Рубрикатор |
Статьи | ИКС № 4 2019 |
Михаил КОНДРАШИН | 23 июля 2019 |
Контейнерная виртуализация: преимущества и проблемы безопасности
Сегодня контейнеры массово используют для разработки и развертывания приложений, а само понятие стало таким же распространенным, как «виртуальная машина», «облако» или «сервер».
Хотя контейнеры и технологии контейнеризации были известны достаточно давно, настоящую популярность они получили после появления в 2013 г. платформы Docker, связанного с ней активного сообщества пользователей и старта инициативы OCI (Open Container Initiative). Помимо ряда явных преимуществ, у контейнеров есть недостатки и уязвимости, которыми могут воспользоваться в своих целях киберпреступники. Поэтому разговор пойдет не только о самих контейнерах, но и о возможных путях их защиты от хакеров.Преимущества контейнеров
Программисты любят контейнеры в первую очередь за гибкую среду, которая позволяет создавать их намного быстрее, чем виртуальные машины (с которыми у контейнеров, кстати, немало общего). Так же быстрее происходит их запуск и остановка. Помимо этого, контейнеры намного менее требовательны к ресурсам системы. Как правило, их «вес» измеряется не в гигабайтах, а в мегабайтах, поскольку при контейнерной виртуализации нет нужды «упаковывать» всю ОС, чтобы приложение нормально функционировало. Вместо этого все контейнеры используют ядро системы хоста, высвобождая огромное количество ресурсов и позволяя установить намного больше таких контейнеров на один хост.
Несмотря на совместное использование ядра, все приложения изолированы друг от друга. Они не могут друг на друга влиять, даже если в каком-нибудь из них произойдет ошибка. Это значит, что разработчики свободно могут изменять параметры своих приложений и не опасаться, что их программа «положит» весь сервер. Эта же изолированность и использование ядра без потребности в гостевой ОС, как в виртуальных машинах, позволяют без проблем переносить контейнеры с приложениями с сервера на сервер. Помимо того, применение контейнеров упрощает управление версиями и обновление приложений, так как обновление софта в одном контейнере не повлияет на другие части системы.
Недостатки контейнеров и угрозы безопасности
Среди основных недостатков контейнеров следует назвать повышенную сложность управления большим их числом в системе (которого легко достичь из-за малого веса самих контейнеров). Для решения этой задачи часто применяются дополнительные инструменты, например Kubernetes. Также в рамках одной системы можно использовать только контейнеры, построенные для конкретной архитектуры, например для ОС Windows, поскольку все они задействуют ядро самой системы, а не гостевые ОС, как в виртуальных машинах. При этом для ресурсоемких приложений будет эффективней использовать не контейнеры или те же виртуальные машины, а традиционный сервер с прямым доступом к его ресурсам.
К явным угрозам безопасности можно отнести публичные репозитории, которые помогают развивать технологии контейнеризации. Команда исследователей Cisco Talos в мае нынешнего года обнаружила, что на портале Docker Hub уже три года контейнеры Alpine Linux распространялись с пустым паролем суперпользования, а дальнейшие исследования Kenna Security подтвердили, что эта же проблема касается примерно 20% всех контейнеров на том же ресурсе. Кроме того, взлом публичного реестра образов и добавление злоумышленниками собственных библиотек позволят заразить все серверы, в кэше которых хранится этот образ, поскольку по умолчанию серверы таких реестров являются доверенными ресурсами.
Рекомендации по кибербезопасности
Современный непрерывный процесс разработки и развертывания приложений, т.е. тот самый CI/CD, явно нуждается в переходе от обеспечения безопасности «по факту» к внедрению инструментов безопасности в сам процесс разработки. По данным Gartner, в этом году уже в более чем 70% корпоративных процессов разработки будут внедряться инструменты для автоматизированной оценки уязвимостей и настроек различных компонентов и пакетов из внешних open source- и коммерческих источников.
Оптимальным решением в данном случае было бы использование не раздельных приложений и инструментов, а единого комплексного решения, программного комплекса, способного самостоятельно обнаруживать вредоносное ПО и библиотеки и выявлять уязвимости (включая уязвимости «нулевого дня»), предотвращать выполнение и развертывание контейнеров в случае, если они были скомпрометированы, и обеспечивать соответствие требованиям к кибербезопасности от международных регуляторов, которые сейчас крайне серьезно относятся к защите данных пользователей.
- обеспечить проверку безопасности на всех стадиях разработки, от кодирования до контейнеризации приложения;
- максимально автоматизировать эту процедуру проверки;
- распределить уровни доступа к механизмам проверки безопасности в зависимости от конкретной роли каждого участника разработки;
- обеспечить поддержку Docker Registry V2 API для сканирования образов контейнеров в реестрах.
Михаил Кондрашин, технический директор Trend Micro в России и СНГ
Заметили неточность или опечатку в тексте? Выделите её мышкой и нажмите: Ctrl + Enter. Спасибо!