Короткий ответ
Единственно правильной схемы сегментации не существует: решение зависит от требований к изоляции между средами (регуляторные требования, риск человеческой ошибки при доступе к прод-данным из staging), объёма межсредового трафика и бюджета на NAT/peering-инфраструктуру, и должно обсуждаться с учётом конкретных рисков организации, а не копироваться как типовой шаблон.
Как это работает подробнее
Разделение сред на отдельные VPC/подсети с явно описанными правилами маршрутизации и файрвола снижает риск, что ошибка конфигурации или инцидент безопасности в менее критичной среде (staging) затронет продакшен; VPC peering или транзитные шлюзы дают прямую маршрутизацию между избранными сетями без прохождения через публичный интернет, а NAT gateway обеспечивает исходящий доступ приватных ресурсов в интернет без прямой маршрутизируемости извне, что уменьшает поверхность атаки, но добавляет точку с ограниченной пропускной способностью и дополнительной стоимостью по трафику.
Пример кода
Пример сегментации:
- VPC prod (10.0.0.0/16): отдельный NAT gateway, explicit peering только к shared-services VPC
- VPC staging (10.1.0.0/16): отдельный NAT gateway, НЕТ прямого peering к prod
- VPC shared-services (10.2.0.0/16): peering к prod и staging, но с разными
security group правилами для каждого направленияЧто использовать на практике
- Практика. сегментацию строят по принципу наименьших необходимых связей: явно перечисленные правила маршрутизации и security groups между конкретными подсетями вместо широких 'разрешить всё между VPC', отдельные NAT gateway на критичные среды для изоляции по стоимости и отказоустойчивости, и регулярный аудит фактически используемых маршрутов/правил, чтобы со временем не накапливались забытые и неиспользуемые разрешения, расширяющие поверхность атаки.
- Компромисс. Аудит командой вроде описания правил VPC peering и security groups должен подтвердить отсутствие прямого маршрута из staging в prod; попытка инициировать соединение из staging-подсети напрямую в prod-подсеть должна блокироваться на уровне отсутствия маршрута или явного запрещающего правила.
Подводные камни
- Риск. настраивать широкий peering 'всё со всем' между prod и staging ради удобства разработки, из-за чего инцидент в менее защищённой среде получает прямой сетевой доступ к продакшену; не закладывать отказоустойчивость NAT gateway (единственный NAT на критичную среду становится точкой отказа для всего исходящего трафика); не документировать и не пересматривать периодически реальную необходимость каждого маршрута/правила.