Первая часть из цикла про
Основная их задача, чтобы происходящее внутри контейнеров не было "черной коробкой" - видны процессы, их взаимодействие с файловой системой и сетью.
Сбор этой информации может происходить как ИЗ контейнера, так и ВНЕ его. Для первого случая решения используют
1) Самым надежным и правильным решением на сегодняшний день считаются
2) Модули ядра предлагают, как вариант, когда ядро младше
3)
4) Подмена
Для окружений с
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 вариант со встраиванием собственной библиотеки для перехвата ряда функций.