NetworkPolicy без самообмана: проверяем изоляцию Kubernetes через eBPF-трассировку
pausa 27 минут назад Краткое содержание статьи NetworkPolicy без самообмана: проверяем изоляцию Kubernetes через eBPF-трассировку Средний 17 мин 829 Блог компании Cloud.ru Информационная безопасность * IT-инфраструктура...
Will Anthropic be the #3 AI Lab at the end of November 2026 (Style Control On)?
В сфере искусственного интеллекта произошло заметное событие. pausa 27 минут назад Краткое содержание статьи NetworkPolicy без самообмана: проверяем изоляцию Kubernetes через eBPF-трассировку Средний 17 мин 829 Блог компании Cloud. ru Информационная безопасность * IT-инфраструктура * Кейс Представим картину: в кластере Kubernetes стоит deny-all, поверх — аккуратные allow-правила. Тест зеленый: curl из клиента до backend проходит, из «чужого» пода — нет.
Вроде все хорошо, можно идти пить чай. А потом берем под с hostNetwork: true и спокойно подключаемся к базе, к которой по политике пускают только backend. Hubble при этом честно пишет FORWARDED от имени (host) — точно так же, как для readiness-проб kubelet.
Технические детали
Ни пода, ни namespace. В статье расскажу, как сверять то, что написано в NetworkPolicy, с тем, что на самом деле происходит в eBPF-датапасе. Покажу два обхода, которые мы нашли на живом кластере, и как их закрыли.
Я Антон Паус, ведущий DevOps инженер в компании Cloud. Почти вся моя карьера связана с сетями, поэтому тема NetworkPolicy мне близка. После появления новых требований от коллег из отдела безопасности, я решил проверить, насколько картина в NetworkPolicy отражает реальность.
Было предположение, что NetworkPolicy не закрывают все кейсы для сетевого разграничения pod-ов в kubernetes кластере, но результат получился куда интереснее Почему «тесты зеленые» — это еще не изоляцияОбычно NetworkPolicy проверяют просто: применили YAML, запустили kubectl exec ... curl из пары подов, получили ожидаемые «да» и «нет». Беда в том, что такой тест проверяет только те маршруты, о которых вы сами вспомнили.
Отраслевые последствия
А обходы как раз лежат в стороне от них:DNS — вроде не трафик приложения, но для разведки хватает с головой: порт базы закрыт, зато имя db. local отлично резолвится. hostNetwork — процесс живет прямо в сетевом namespace ноды.
В EndpointSlice такой под попадет с IP узла, но собственного veth у него нет, и обычные pod-политики его трафик не цепляют. Инфраструктура вне pod-сети — NodeLocal DNS, kubelet, адреса нод. Поэтому проверять изоляцию лучше не одиночными вызовами curl, а по событиям из самого ядра.
Здесь нам пригодятся два инструмента:Cilium Hubble отвечает на вопрос «пропустил ли датапас»: FORWARDED / DROPPED, identity источника и получателя, DNS-запросы через прокси. Tetragon отвечает на вопрос «кто это был»: процесс, под, аргументы, saddr:sport. На каком стенде проводились тестыДля проведения тестирования я взял существующий стенд разработки, располагающийся в облаке на виртуальных машинах.
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.



