Представьте, что у вас есть несколько серверов EC2, которые обслуживаются балансировщиком нагрузки (ELB).
Скажем, они находятся в общедоступном VPC, то есть каждый экземпляр EC2 имеет общедоступный IP-адрес, и каждый экземпляр защищен брандмауэром с использованием групп безопасности (SG), поэтому только ELB имеет прямой доступ к экземплярам.
Предположим, что серверы делать требуется исходящий общедоступный доступ в Интернет.
Мы знаем, что Рекомендуемый AWS подход вместо этого использовать частный VPC + NAT для повышения безопасности.
Но какова практическая польза от этого по сравнению с вышеизложенным?
Насколько я понимаю, никто не может напрямую подключиться к экземплярам в приведенном выше сценарии из-за правил SG, и, поскольку это обрабатывается в инфраструктуре AWS, наши серверы не могут быть переполнены соединениями - пакеты никогда не будут связаться с нами.
Так какой же вред от общедоступного IP-адреса, если AWS все равно отключит вас?
Я упускаю какие-то другие преимущества от частного VPC? Я ошибаюсь в одном из своих утверждений?
Это действительно вопрос концепции «глубокоэшелонированной защиты». С общедоступными адресами вы полагаетесь исключительно на конфигурацию группы безопасности для защиты ваших серверов - что вы все сделали правильно, что никто случайно не изменил ее и т. Д.
Вы можете перевернуть вопрос и спросить себя, зачем вам нужны публичные адреса, когда частных будет достаточно?
Я бы сказал, что у частного варианта VPC + NAT меньше административных накладных расходов и меньше шансов оставить доступ открытым из-за ошибки (например, не назначая SG или какое-то довольно открытое правило).
Кроме того, не зная внутреннего устройства платформы, я могу сделать обоснованное предположение и сказать, что VPC + NAT лучше использует ресурсы платформы. Если у вас есть общедоступные IP-адреса, входящий трафик, который будет отклонен, вероятно, должен проходить через сеть AWS до вашей виртуальной машины. Если у вас нет общедоступных IP-адресов, на ваши виртуальные машины не поступает входящий трафик :)