Тестирование современных приложений не обходится без контейнеризации. И, как и любые другие объекты информационного типа, контейнеры также подвержены киберугрозам. В статье расскажем о требованиях по безопасности средств контейнеризации и о тех решениях, которые разрабатывались для защиты контейнеров.
Решения для обеспечения безопасности контейнеризации всегда многоуровневые, поскольку сами контейнеры работают в среде, также включающей несколько уровней. И для успешной защиты от киберугроз требуется защитить каждый.
Образ контейнера (Image) — первая потенциальная угроза. Все контейнеры запускаются именно из образов, поэтому зараженный образ становится серьезной угрозой для взлома всей системы. Для защиты системы от заражения требуется проводить периодическое сканирование, причем это касается каждого разворачиваемого образа. В целях уменьшения рисков не следует пользоваться образами, полученными из сомнительных источников. И даже если образ скачивается из официального хранилища (например, Docker), он должен быть тщательно проверен перед развертыванием или модификацией.
За счет реестра программы контейнеризации и оркестраторы обеспечивают управление образами, поэтому вредоносный код в реестре также ставит под угрозу всю инфраструктуру. При этом уровень реестра считается одним из наиболее уязвимых. Ущерб от вредоносного кода в реестре может быть колоссальным, ведь под угрозу в этом случае ставятся все данные в системе. Для защиты реестра обычно организуют безопасный доступ и сканирование в постоянном режиме. На организацию доступа следует обратить особое внимание, поскольку при получении root-доступа злоумышленники получают возможность интеграции вредоносного кода в образы и исполнения этого кода с правами суперпользователя. Такая ситуация называется root-escape. Еще один распространенный термин: jailbreak.
На первый взгляд, запуску приложений в контейнерах ничего не угрожает, поскольку все процедуры происходят в «пузыре». Однако этот «пузырь» создает программная среда, которая также является источником потенциальных уязвимостей. При этом оценка безопасности среды исполнения приложений — одна из наиболее сложных задач для специалистов по кибербезопасности. Дело в том, что под каждое приложение создается своя программная среда. И уязвимости могут содержаться в самом ПО, при помощи которого работает приложение в контейнере. Задачей специалиста по кибербезопасности в данном случае является выявление нормального поведения контейнерной среды с тем, чтобы затем фиксировать аномальное, то есть отклонения от этой нормы.
Платформа оркестрации также является потенциальным источником уязвимостей. При использовании Docker Swarm или Kubernetes возникает проблема организации доступа, поэтому требуются решения по организации учетных записей. Для этого формируются роли, то есть группы учетных записей, в соответствии с которыми пользователям присваиваются соответствующие права. Кроме того, защита сред оркестрации должна также включать мониторинг состояния и взаимодействий групп контейнеров.
Успешность почти всех кибератак зависит от организации сетевого доступа (те же самые роли и права). И ведущую роль здесь играет человеческий фактор. Если допущена ошибка, даже самое надежное защитное ПО не спасет от утечки данных. А решения здесь — повышение грамотности сотрудников и максимальный уровень шифрования трафика. В этом случае даже если злоумышленники получат доступ к данным, извлечь из них пользу не получится. Однако получится их уничтожить, поэтому про обучение своего персонала правилам кибербезопасности забывать не стоит.
Казалось бы, про небрежное обращение с образами контейнеров говорить излишне, но эту ошибку разработчики допускают снова и снова. А здесь нужно следовать одной известной поговорке, которая применительно к контейнерам будет звучать так: «семь раз проверь, один выложи». При помещении образов контейнеров в общее хранилище следите за тем, что в код образа не была «зашита» конфиденциальная информация, особенно логины и пароли.
Еще одна критическая точка безопасности — операционная система, в которой развернуты среды контейнеризации и оркестрации. Не следует думать, что изолированное выполнение этих процессов само по себе является надежной защитой — хакеры в состоянии получить доступ к приложениям через уязвимости в ОС хоста. Следовательно, должна быть организована многоуровневая защита операционной системы от различных видов угроз, а также управление правами доступа на уровне ОС и проверка целостности ключевых файлов.
В отдельных случаях под контейнеры создается своя ОС, которую можно развернуть, например, с помощью технологии виртуализации, запустив ее через виртуальную машину. А разработчики ОС семейства Linux предлагают несколько готовых решений для разработчиков приложений, работающих с контейнерами. Эти системы отличает легкость и компактность, поскольку в них установлен только минимальный набор ПО, которого достаточно для выполнения главной задачи:
Конечно, не запрещается использовать и стандартные ОС, но в этом случае следует соблюдать одно правило: такую операционную систему желательно использовать только для работы с контейнерами, а все остальные этапы разработки выполнять в других ОС.
На российском и мировом рынках существует немало компаний, предлагающих решения для безопасности контейнеров. Перечислим и кратко опишем те, которые попадают в топ рейтингов IT-порталов. Но перед этим рассмотрим инструменты самих операционных систем. В Linux существуют:
Как видим, в операционных системах семейства Linux достаточно собственных инструментов защиты контейнеров. Однако не помешает задействовать и специальное ПО от разработчиков, специализирующихся на вопросах кибербезопасности. Вот некоторые решения: