в двух словах для более простых сред я сейчас очень простоое решение сделал:
файрволлом в принципе запрещено все что не разрешено. Со всех хостов разрешено только:
1) порт для мониторинга для определенных серверов - ну типа пром, причем стоит реверс прокси для всех экспортеров на хосте за 1 портом.
2) отправка логов на определенные серверы
3) доступен балансировщик - балансировщики разные типа уровня кластера, уровня дц, глобальные.
Все взаимодействие с реальностью через балансировщик и сервисы доступные через него, а там уже waf и прочее.
Естесвенно есть исключения типа сервисы которым надо напрямую общаться друг с другом аля кластер зукипера ну это в общем то 1 строчка в конфиге scm кого куда пустить.
А так вообще надо ставить эксперименты с тем же calico - там можно сделать микросегментацию, провайдеры поддерживаются практически все существующие - хочешь куб, хочешь просто докер и тд
я не хочу обсуждать калико, т.к. мы сваливаемся к кластеру кубера, а там всё понятно.
вот у нас есть
- Сервис 1 - 5 ВМ (некоторое количество внутренних сервисов)
- Сервис 2 - еще 5 ВМ (некоторое количество внутренних сервисов)
- Сервис 1 должен иметь доступ к сервису 2.
- У Сервиса 1 есть некоторое количество публичных портов.
Есть пользователи:
- Юзеры А - доступ доступ только к сервису SA
- Юзеры B - доступ только к сервису SB
- Юзеры C - ко всем сервисам на заданных IP
Пока я не вижу другого способа, кроме как заскриптовать такое на обычном iptables.