sensor-based решения по безопасности для Kubernetes.Основная их задача, чтобы происходящее внутри контейнеров не было "черной коробкой" - видны процессы, их взаимодействие с файловой системой и сетью.
Сбор этой информации может происходить как ИЗ контейнера, так и ВНЕ его. Для первого случая решения используют
sidecar- контейнеры, подмену системного компонента runc и встраивание (injection) собственных библиотек в процессы, пользовательских приложений. Для второго случая используются модули ядра и eBPF пробы. 1) Самым надежным и правильным решением на сегодняшний день считаются
eBPF пробы - просто, быстро, стабильно.2) Модули ядра предлагают, как вариант, когда ядро младше
4.19. При этом нужно понимать, что при ошибке в модуле и его падении - упадет и вся Node. 3)
Sidecar- контейнеры могут помочь видеть только сеть и при этом дают значительные ресурсные издержки на каждый Pod.4) Подмена
runc обычно идет в связке со встраиванием собственных библиотек через LD_PRELOAD, dlopen, патчинг GOT таблиц и т.д. Все для того, чтобы подготовить окружение для запускаемого контейнера для его мониторинга - то есть происходит модификация окружения (контейнеры под таким решением и без него могут вести себя по-разному). Данная библиотека производит перехват нужных функций на user-space уровне. Получаем такой классический антивирус из нулевых. При этом накладные расходы по ресурсам размываются с расходами самого приложения и сложно сказать на сколько они в итоге повышаются, но точно падает скорость работы.Для окружений с
MicroVM (типа AWS Fargate) или serverless-функциями (типа AWS Lambda) работает только 4 вариант со встраиванием собственной библиотеки для перехвата ряда функций.