Короткий ответ
Сетевая сегментация — разделение инфраструктуры на изолированные сегменты (подсети, VPC, namespace) с контролируемыми правилами трафика между ними, чтобы компрометация одного сервиса не давала прямой доступ ко всем остальным, включая базы данных.
Как это работает подробнее
без сегментации любой сервис в сети может свободно подключаться к любому другому (flat network), поэтому взлом даже некритичного публичного сервиса (например, фронтенда) может дать сетевой доступ напрямую к базе данных или внутренним админ-панелям.
Что использовать на практике
- Практика. трафик разделяют на уровни — публичная подсеть (балансировщики), приватная подсеть приложений, отдельная подсеть для баз данных с доступом только от конкретных приложений; в Kubernetes аналог — NetworkPolicy и разделение по namespace. Правила описывают по принципу «запрещено всё, что явно не разрешено».
- Проверка. Ожидаемое поведение: подключение к базе напрямую с ноутбука разработчика или с любого другого сервиса (кроме app-sg) будет сброшено на уровне сети ещё до аутентификации в самой БД — проверяется попыткой psql -h db-host из непривилегированного источника и получением тайм-аута соединения.
Подводные камни
- Ошибка. открывать базе данных доступ 0.0.0.0/0 «для удобства разработки» и забывать закрыть; размещать публично доступный сервис и БД в одной подсети без security group/NACL между ними; считать, что приватный IP-адрес сам по себе означает защищённость.