Что такое VPC: подсети, группы безопасности и шлюзы
Основы4 минРедакция Innovialabs
Коротко
VPC — это ваша изолированная сеть внутри облака: вы делите её на публичные и приватные подсети, фильтруете трафик группами безопасности и направляете его через internet и NAT gateway, чтобы база данных никогда не смотрела в интернет.
Что такое VPC
VPC (Virtual Private Cloud) — это частная сеть, которую вы создаёте внутри публичного облака. Физически ваши серверы работают на общем оборудовании с другими клиентами, но логически живут в собственном адресном пространстве, которое никто не видит и куда никто не попадёт без вашего разрешения.
При создании VPC вы задаёте диапазон IP-адресов в нотации CIDR, например 10.0.0.0/16. Каждый сервер, база данных и балансировщик внутри получает приватный адрес из этого диапазона. По умолчанию ресурсы разных VPC не видят друг друга, а из интернета внутрь ничего не проходит.
В AWS и Google Cloud это называется VPC, в Azure та же идея называется Virtual Network (VNet). Детали отличаются, но строительные блоки ниже есть везде.
Подсети: публичные и приватные
Подсеть (subnet) — это часть диапазона VPC, например 10.0.1.0/24. В AWS каждая подсеть находится в одной зоне доступности, поэтому для отказоустойчивости подсети обычно создают минимум в двух зонах.
Подсеть делает «публичной» или «приватной» не галочка, а её таблица маршрутов (route table):
- Публичная подсеть — маршрут
0.0.0.0/0(всё за пределами VPC) ведёт на internet gateway. Ресурсы с публичным IP здесь доступны из интернета. - Приватная подсеть — маршрута на internet gateway нет. У ресурсов только приватные адреса, снаружи до них не достучаться.
Простое правило: в публичные подсети кладите только то, что обязано принимать соединения из интернета, например балансировщик. Всё остальное — в приватные.
Шлюзы: как трафик входит и выходит
| Компонент | Направление | Зачем нужен |
|---|---|---|
| Internet gateway | вход и выход | Связывает публичные подсети с интернетом |
| NAT gateway | только выход | Даёт приватным ресурсам выход в интернет (обновления, внешние API), но не делает их доступными снаружи |
| VPN или частный канал | в обе стороны | Соединяет VPC с офисной сетью или другим дата-центром |
NAT gateway стоит в публичной подсети. Приватные серверы отправляют через него исходящие запросы и получают ответы, но начать соединение с ними снаружи невозможно. Управляемый NAT gateway тарифицируется отдельно, поэтому посмотрите цены у своего провайдера, прежде чем ставить его в каждую зону.
Группы безопасности и сетевые ACL
Группа безопасности (security group) — виртуальный файрвол, привязанный к ресурсу: серверу, базе, балансировщику. Ключевые свойства в AWS:
- в ней только разрешающие правила, всё неразрешённое заблокировано;
- она stateful: если входящий запрос разрешён, ответ уходит автоматически;
- в правиле можно указать другую группу безопасности вместо диапазона IP, например «порт 5432 только от группы серверов приложения».
Network ACL работает на уровне подсети, не хранит состояние и поддерживает запрещающие правила. Большинство небольших проектов оставляют ACL по умолчанию и фильтруют всё группами безопасности.
Типовая схема для веб-приложения
Для приложения с бэкендом и базой данных:
- VPC
10.0.0.0/16в двух зонах доступности. - Публичные подсети (по одной на зону): балансировщик и NAT gateway.
- Приватные подсети приложения: серверы или контейнеры с приложением.
- Приватные подсети данных: база данных, без какого-либо маршрута в интернет.
Группы безопасности:
lb-sg: разрешить 443 (и 80 для редиректа) с0.0.0.0/0;app-sg: разрешить порт приложения только отlb-sg;db-sg: разрешить порт базы только отapp-sg.
Единственная точка входа из интернета — балансировщик. База недоступна снаружи, даже если кто-то узнает её адрес.
Для администрирования не открывайте SSH всему миру. Используйте session manager провайдера, bastion-хост со строгими правилами или VPN.
Частые ошибки
- База в публичной подсети «чтобы быстро подключиться с ноутбука». Обычно так и остаётся.
- Порт 22 или 3306 открыт для
0.0.0.0/0в группе безопасности. - Пересекающиеся диапазоны CIDR между VPC или с офисной сетью — потом мешают peering и VPN.
- Слишком маленький диапазон: менять VPC позже сложнее, чем сразу заложить
/16. - Продакшен в default VPC без проверки её настроек.