NeuVector — это открытая платформа для обеспечения безопасности контейнеров и кластеров Kubernetes. Она разрабатывалась как комплексное решение IDS/IPS и сейчас входит в портфель компании SUSE.
Недавно мы по запросу сообщества реализовали интеграцию NeuVector в виде модуля для Deckhouse Kubernetes Platform. Однако наш опыт показывает, что NeuVector не является надёжным инструментом обеспечения безопасности для production-сред. Ниже представлены аргументы, подтверждающие нашу позицию, несмотря на отдельные сценарии, где использование данного решения может быть оправдано.
Возможные сценарии применения NeuVector
Важно: мы НЕ рекомендуем использовать NeuVector в production-средах, за исключением случаев, когда у компании отсутствуют компетенции в части кибербезопасности либо требуется «лёгкий старт» с минимальными трудозатратами.
Тем не менее стоит отметить, что решение может быть полезно в ряде специфических ситуаций.
1. Быстрая организация базовой безопасности Kubernetes
NeuVector предоставляет функциональность IDS/IPS «из коробки», позволяя относительно быстро развернуть решение для инспекции и контроля сетевого трафика и системных вызовов приложений. Это уместно для компаний, у которых нет выделенного отдела информационной безопасности, поскольку снимает часть сложности первичной настройки.
2. Интеграция в enterprise-сегменте с регуляторными требованиями
Инструмент иногда используют крупные компании, которым нужно реализовать требования стандартов комплаенса, например GDPR. NeuVector позволяет сегментировать сетевые потоки, реализовать инспекцию внутри кластера и формировать отчётность для аудита.
Следует учитывать, что отчётность и поддержка в первую очередь ориентированы на западный enterprise. Например, NeuVector не поддерживает самоподписанные CA-сертификаты, которые широко используются в российском корпоративном секторе.
3. Визуализация и ручное управление сетевым взаимодействием
NeuVector предоставляет неплохой, хотя и весьма устаревший графический интерфейс для визуализации сетевых связей между сервисами и выявления уязвимостей на уровне соединений и портов. Он может быть удобен для инфраструктурных администраторов, не обладающих экспертизой в Kubernetes и других Cloud Native-инструментах.
4. Работа с устаревшими (legacy) и смешанными инфраструктурами
NeuVector продолжает работать в старых версиях Kubernetes и с проектами на Docker/Swarm — там, где современные инструменты (Falco, Trivy и другие) могут работать, но требуют более сложной настройки для этих сред исполнения, тогда как у NeuVector поддержка «из коробки».
5. Минимизация усилий на ручную настройку
Функция self-learning позволяет за короткое время получить базовый уровень защиты без глубокого изучения бизнес-логики приложения. Такой путь подходит для небольших организаций и относительно статичных рабочих нагрузок.
Подытожим
В каких случаях NeuVector — это осознанный выбор:
Когда приоритет — максимально быстро интегрируемая система безопасности сети на базе IDS/IPS в кластере без необходимости самостоятельного написания низкоуровневых политик.
Когда важны отчётность и визуализация сетевой картины (так, как её представляют разработчики NeuVector) — для обучения персонала, аудита или анализа post mortem.
Когда инфраструктура устаревшая или смешанная и нет ресурса на её полную перестройку и внедрение более современных, интегрируемых инструментов.
Когда бизнес ставит во главу угла соответствие стандартам комплаенса (GDPR), где требуется поддерживать внутреннюю сегментацию и аудируемость трафика.
Когда команда не хочет или не может писать кастомные политики безопасности runtime (как в Falco или Open Policy Agent), а желает автоматизации с минимумом ручного труда.
Почему мы не рекомендуем использовать NeuVector в production
Несмотря на ряд преимуществ, у NeuVector есть существенные ограничения и недостатки.
1. Архитектурные ограничения
Основа архитектуры проекта была заложена до массового распространения контейнеров — в 2016 году. Из-за этого в платформе используются устаревшие подходы, например запуск нескольких сервисов внутри одного контейнера через супервизор. Это затрудняет обновление компонентов и диагностику сбоев. Sidecar-контейнеры намного прозрачнее в эксплуатации.
Архитектура проекта в целом очень хрупкая. Многие вещи «захардкожены» внутри NeuVector и любое изменение параметров окружения может сделать его неработоспособным.
Платформа использует собственную инсталляцию Consul и сохраняет настройки всех контроллеров в единую директорию с требованием mode: ReadWriteMany
для PVC. В результате выбор совместимых решений хранения данных сильно ограничен. Ошибка конфигурации может привести к повреждению правил и политик безопасности.
NeuVector не поддерживает такие современные технологии, как eBPF и Opentracing. Это снижает возможности обнаружения угроз и интеграции с внешними системами мониторинга.
Кроме того, DaemonSet-агенты NeuVector требуют значительных ресурсов, особенно в крупных кластерах, поскольку выполняют инспекцию всего трафика в режиме DPI. Такие технологии, как eBPF, способны реализовать сетевую безопасность намного экономичнее. Плюс для работы с полным функционалом агенты должны запускаться в privileged-режиме, что увеличивает поверхность атаки.
2. Ограниченная совместимость и интеграция
Если со старыми версиями Kubernetes всё в порядке, то поддержка новых релизов нередко сильно запаздывает.
В большинстве облачных сред NeuVector либо не работает, либо работает с серьёзными ограничениями, а ещё он не интегрируется с Cloud Native-инструментами.
3. Проблемы интерфейса и документации
Пользовательский интерфейс NeuVector устарел и неудобен в повседневной работе. В нём отсутствует удобный и полнофункциональный механизм фильтрации: доступные фильтры лишь частично покрывают рутинные задачи, а их настройка вызывает затруднения и ограничивает пользовательские сценарии. Также в интерфейсе нельзя посмотреть подробности при возникновении ошибок. Если приложение выдало ошибку при сканировании, деталей вы не найдёте.
Кажется, что часть функционала нагромождалась друг на друга, и в итоге получилась сборная солянка. Интеграция с SSO (например, Rancher и SUSE SSO) реализована фрагментарно, поддержка LDAP/OIDC нестабильна и регулярно требует повторного логина. Кстати, результаты поиска в документации по «Single sign on» сводятся исключительно к Rancher, хотя SSO — устоявшийся термин.
Документация NeuVector в целом неоднородна: архитектура и основные компоненты описаны достаточно хорошо, но многие примеры настроек устарели. Ответы в issue-системе часто шаблонны и не содержат решений по существу.
Более того, REST API не покрывает весь доступный функционал платформы. А это затрудняет автоматизацию и интеграцию с внешними системами.
4. Особенности Open Source-статуса
Формально NeuVector — это Open Source-платформа, но до покупки компанией SUSE проект был полностью закрытым. У него не сформировалось полноценное сообщество и мало активных контрибьюторов. SUSE делает ставку на Rancher Prime, а NeuVector остаётся на вторых ролях.
5. Ограничения security-функционала
Пожалуй, это последняя, но самая важная причина не использовать NeuVector в production. С описанным выше в целом можно смириться, но вот нюансы и ограничения security-возможностей хочется раскрыть подробнее.
5.1. Сфокусированность на сетевом трафике
NeuVector разрабатывался прежде всего как NGFW (Next-Generation Firewall) и IDS/IPS для контейнерной среды. Его основные функции — Deep Packet Inspection, межконтейнерная фильтрация по сетевым политикам и обнаружение сетевых атак.
Минусы такой архитектуры:
Легко обойти с помощью шифрования (например, внутрикластерных TLS/SSL-соединений).
Слабая реакция на современные атаки уровня хоста и ядра.
5.2. Ложные срабатывания и ограниченный coverage
Сигнатуры NeuVector охватывают только известные сетевые атаки. Поведенческий анализ относительно прост и часто выдаёт многочисленные false positives — особенно в крупных кластерах.
А ещё логика рабочих профилей (behavioral baseline) зачастую негибкая: настройки профилей плохо масштабируются при большом количестве микросервисов.
5.3. Уязвимость и риски самого NeuVector
NeuVector требует запуска агентов/демонов с привилегиями на каждом узле. Это расширяет поверхность атаки: если злоумышленник получит доступ к узлу — через эскалацию можно снизить уровень защищённости всего кластера. А сами агенты могут падать, оставлять незакрытые debug endpoints или не догружаться, что влечёт за собой слепые зоны в защите кластера.
5.4. Сканирование образов на уязвимости
База уязвимостей содержит небольшое количество операционных систем, пожалуй, только самые популярные: Debian, Ubuntu, SUSE, Red Hat Linux. Поддержка российских ОС отсутствует, как и информация из БДУ ФСТЭК России.
Расширять базу NeuVector своими силами будет довольно-таки сложно. Монолитная архитектура платформы не предоставляет механизмов для простой загрузки или подключения кастомных источников. Чтобы добавить поддержку новых ОС или источников уязвимостей, придётся разбираться с внутренней логикой продукта и делать свою сборку NeuVector.
Про поддержку самоподписанных CA-сертификатов я уже писал выше, но повторюсь — её просто нет.
5.5. Режим self-learning
Этот режим даёт иллюзию защищённости. Настройка с его помощью выглядит очень лёгкой и формирует ложное чувство контроля. Однако если в режиме обучения NeuVector не успел обнаружить какую-то активность, например отчёт, который делается раз в месяц, то она будет заблокирована.
В крупных системах генерируется очень много правил, и на их аудит нужно потратить немало времени. Пожалуй, единственный действенный способ — формировать правила в dev-кластере и вручную, с полным пониманием процесса, переносить их в prod.
6. Плохая поддержка IaC
NeuVector использует собственную ролевую модель. Для неё нужно настроить mapping с OIDC, LDAP/AD или SAML, а это далеко не тривиальная задача. Все правила доступа в NeuVector сохраняются во внутреннем формате, и хотя их можно выгрузить как манифесты для Custom Resource, эти манифесты откровенно сложно читать.
Всё это указывает на то, что инструмент изначально проектировался вне контекста Kubernetes и IaC-практик. Поддержку K8s добавили постфактум — с множеством нюансов и архитектурных компромиссов.
Современные альтернативы
Для обеспечения комплексной безопасности Kubernetes мы рекомендуем использовать зрелые открытые инструменты:
Falco — мировой стандарт для runtime security, поддерживает event-based-мониторинг, легко расширяется и интегрируется.
Trivy — лидер по сканированию образов контейнеров, включая поиск уязвимостей, проблем с конфигурациями и секретами. Поддерживает CIS Benchmark.
OPA/Gatekeeper — основной инструмент для реализации политик безопасности и контроля комплаенса.
Cilium Network Policy — современный инструмент для контроля и блокировки нежелательного сетевого трафика, обеспечивает гибкие eBPF-политики и высокую производительность.
Эти решения активно применяются в Deckhouse Kubernetes Platform, проверены на большом количестве кластеров, поддерживают российские ОС и обеспечивают высокий уровень защиты Cloud Native-инфраструктуры. На первый взгляд может показаться, что они не дают возможность аудита. Однако, помимо метрик и алертов, перечисленные инструменты формируют таблицы с отчётами в Grafana Dashboard, которые легко можно сохранить в PDF и использовать в отчёте или при согласовании.
Заключение
NeuVector может быть полезен в отдельных случаях — как инструмент для быстрого знакомства с основами сетевой безопасности Kubernetes или организации базовой защиты при отсутствии профильных специалистов. Однако мы не рекомендуем использовать NeuVector в production-средах, потому что его архитектурные, функциональные и интеграционные ограничения не позволяют решить современные задачи безопасности контейнеризированных и облачных сред на должном уровне.
Использование NeuVector может создавать ложное ощущение защиты и приводить к пропуску реальных угроз в вашей инфраструктуре. Предпочтение должно отдаваться современным Open Source-решениям, таким как Falco, Trivy, OPA/Gatekeeper и Cilium Network Policy. Они обеспечивают гибкость, масштабируемость и соответствие актуальным требованиям безопасности.
Отметим, что NeuVector поставляется у нас «as is», мы не отвечаем за его развитие, поддержку или исправление ошибок, несмотря на то, что он включён в наш модуль.
P. S.
Читайте также в нашем блоге: