Появление более мощных процессоров положило начало компьютерной революции, которая привела к появлению того, что мы сейчас называем облаком. Благодаря возможности одновременного запуска десятков, если не сотен виртуальных машин на одном экземпляре оборудования, компании смогли предложить своим пользователям множество услуг и приложений, которые в противном случае были бы финансово нецелесообразны, а то и вовсе невозможны.
Однако у виртуальных машин (ВМ) есть ряд недостатков. Зачастую для многих приложений полная виртуализированная операционная система оказывается избыточной. И хотя виртуальные машины гораздо более гибкие, масштабируемые и гибкие, чем парк серверов без ОС, они всё же требуют значительно больше памяти и вычислительной мощности и менее гибки, чем следующее поколение этой технологии — контейнеры. Помимо того, что контейнерные приложения легче масштабировать, они состоят только из необходимых частей приложения и его вспомогательных зависимостей. Поэтому приложения, основанные на микросервисах, как правило, легче и проще настраиваются.
Виртуальные машины сталкиваются с теми же проблемами безопасности, что и их аналоги на физическом уровне, и в некоторой степени проблемы безопасности контейнеров отражают проблемы безопасности их компонентов. Развёртывание контейнеров и их инструментарий создают особые проблемы безопасности для тех, кто отвечает за запуск приложений и служб, будь то ручная сборка приложений с использованием выбранных контейнеров или запуск в производственной среде с оркестровкой в масштабе.
Существую определенные риски безопасности, связанные с контейнерами. Например, неправильная конфигурация: Сложные приложения состоят из нескольких контейнеров, и неправильная конфигурация — зачастую всего одна строка в YAML-файле — может предоставлять ненужные привилегии и расширять поверхность атаки.
Еще одним риском являются уязвимые образы контейнеров. В 2022 году Sysdig обнаружил более 1600 образов, идентифицированных как вредоносные в Docker Hub, а также множество контейнеров, хранящихся в репозитории с жёстко заданными облачными учётными данными, ключами SSH и токенами NPM. Процесс извлечения образов из публичных реестров непрозрачен, а удобство развёртывания контейнеров (плюс давление на разработчиков, требующее быстрых результатов) может означать, что приложения могут легко создаваться с использованием изначально небезопасных или даже вредоносных компонентов.
В крупных проектах инструменты оркестровки, такие как Kubernetes, могут увеличить поверхность атаки, как правило, из-за неправильной настройки и высокой сложности. Исследование D2iQ показало, что только 42% приложений, работающих на Kubernetes, были запущены в эксплуатацию — отчасти из-за сложности администрирования крупных кластеров и высокой сложности обучения.
Об обеспечении безопасности контейнеров с помощью машинного обучения рассказывает Емельянова Наталия Юрьевна, доцент кафедры искусственного интеллекта Финансового университета при Правительстве Российской Федерации:
Специфические проблемы безопасности контейнеров можно решить с помощью алгоритмов машинного обучения, обученных наблюдению за компонентами приложения, когда оно работает «чисто». Создавая базовый уровень нормального поведения, машинное обучение может выявлять аномалии, которые могут указывать на потенциальные угрозы, связанные с необычным трафиком, несанкционированными изменениями конфигурации, странными схемами доступа пользователей и неожиданными системными вызовами.
Платформы безопасности контейнеров на основе машинного обучения могут сканировать репозитории образов и сравнивать каждый из них с базами данных известных уязвимостей и проблем. Сканирования могут запускаться автоматически и планироваться, что помогает предотвратить добавление вредоносных элементов во время разработки. Автоматически создаваемые отчёты аудита можно сравнивать со стандартными контрольными показателями, или организация может установить собственные стандарты безопасности, что полезно в средах, где обрабатываются высококонфиденциальные данные.
Об роли машинного обучения для обеспечения безопасности контейнеров рассказывает Коротеев Михаил Викторович, заведующий кафедрой искусственного интеллекта Финансового университета при Правительстве Российской Федерации:
Благодаря взаимодействию между специализированными функциями безопасности контейнеров и программным обеспечением для оркестрации можно изолировать или закрыть подозрительные контейнеры, отозвать небезопасные разрешения и приостановить доступ пользователей. Благодаря API-подключениям к локальным межсетевым экранам и конечным точкам VPN можно изолировать целые среды или подсети, а также блокировать трафик на границах сети.
Машинное обучение может снизить риск утечки данных в контейнерных средах, работая на нескольких уровнях. Возможно обнаружение аномалий, сканирование активов и выявление потенциальной ошибки конфигурации, а также относительно простая реализация любого уровня автоматизированных оповещений или исправлений.
Трансформационные возможности контейнерных приложений можно реализовать, не сталкиваясь с проблемами безопасности, которые мешали некоторым компаниям исследовать, разрабатывать и запускать приложения на базе микросервисов. Преимущества облачных технологий можно реализовать, не нарушая существующих стандартов безопасности, даже в секторах с высоким уровнем риска.