Контейнеры versus VM



В рамках своего канала я уже не однократно рассказывал, что в качестве container runtime в Kubernetes можно использовать VM. Изучая данное направление, следя за их развитием, я все больше убеждался в крутости использования VM, базирующейся в первую очередь на их высокой изолированности (и безопасности).



НО если посмотреть на них не с точки зрения безопасности, то можно заметить как очевидные, так и не очень ограничения и недостатки. Во-первых, это определенные требования к окружению/железу - не везде VM запуститься (тут еще стоит помнить про разные типы виртуализации full, paravirtualization, nested) и не любой сервис вам даст это сделать. Во-вторых, очень сильную изоляцию чаще рассматривают не в контексте security, а в контексте multitenancy, что далеко не всем вообще надо. В-третьих, сильно падает (исчезает?) observability происходящего внутри контейнеров. Если в случаи классических контейнеров для вас это такие же linux процессы просто с определенными свойствами, то в случаи VM это несколько общих процессов, представляющих для вас "черный ящик". И наблюдать за происходящим там можно только за тем, что вы сами или разработчики VM запрограммировали для передачи наружу в систему мониторинга, а любимые и проверенные инструменты уже не помогут.



Третий пункт лично для меня (как в прочем и для ИБ) наиболее критичный. Наличие любого "черного ящика" в системе затрудняет как обнаружение, так и расследование инцидентов.



P.S. Уверен есть и другие ограничения и недостатки - можно их собрать в комментариях.