Назад | Перейти на главную страницу

Почему первичные сетевые интерфейсы вынуждены наследовать все группы безопасности своих экземпляров EC2?

Я тестирую виртуальный балансировщик нагрузки, работающий на экземпляре EC2. Я хотел бы иметь возможность изменить настройку и протестировать балансир в различных условиях. Чтобы смоделировать физический балансировщик нагрузки, я назначил экземпляру три сетевых интерфейса:

  1. Внешний (основной) - открытый интерфейс для Интернета. Правила AWS будут разрешены для всего трафика к этому интерфейсу. Балансировщик нагрузки установит свои собственные правила IP / порта для внутренней фильтрации этого трафика. Подключения к этому интерфейсу будут поступать как изнутри, так и извне VPC.
  2. Управление - специальный интерфейс с правилами, установленными для разрешения трафика HTTPS на веб-интерфейс балансировщика нагрузки или трафика SSH в оболочку управления, работающую на балансировщике нагрузки. Управляющие соединения будут устанавливаться с компьютеров, находящихся за пределами VPC.
  3. Внутренний - интерфейс, через который будут подключаться все экземпляры за балансировщиком нагрузки. Подключения на этом интерфейсе будут сопоставлены с подключениями на внешнем интерфейсе балансировщиком нагрузки. Подключения к внутреннему интерфейсу будут поступать только от экземпляров, находящихся внутри VPC.

Чтобы смоделировать физические соединения, я хотел бы применить к этим интерфейсам некоторые правила группы безопасности AWS, чтобы были разрешены только соединения между определенными экземплярами в VPC (IE: они подключены друг к другу). Для этого я создал отдельную группу безопасности для каждого интерфейса (внутреннего, управленческого и внешнего).

Насколько я понимаю, правила внутри группы безопасности применяются ко всему входящему и исходящему трафику на интерфейсах, которые им принадлежат. Поскольку каждый интерфейс в этой настройке выполняет свою роль, я бы хотел, чтобы каждый интерфейс принадлежал одному (и только один) группа безопасности.

Мне неясно, что означает принадлежность самого экземпляра (в отличие от его интерфейсов) к группе безопасности. Я считаю, что, поскольку экземпляр балансировщика нагрузки будет взаимодействовать по всем трем интерфейсам, он должен принадлежать всем трем группам безопасности.

К сожалению, когда я применяю к экземпляру внутренние группы безопасности и группы безопасности управления, внешний интерфейс также должен быть включен во внутренние группы безопасности и группы безопасности управления.

Аналогичным образом, когда я удаляю внутренние группы безопасности и группы безопасности управления из внешнего интерфейса, он также удаляет экземпляр из этих групп безопасности.

Применяются ли группы безопасности к экземпляру как лишний ярлык конфигурации (IE: на самом деле имеют значение только группы безопасности, применяемые к сетевым интерфейсам), есть ли другой способ достичь нужной конфигурации, или я неправильно думаю о проблеме и есть ли причина, по которой AWS предотвращает эту конфигурацию?

Хотя можно предположить, что экземпляры AWS имеют группы безопасности, на практике у сетевых интерфейсов есть группы безопасности. Каждый интерфейс (предоставляется с экземпляром или ENI) может иметь свои собственные группы безопасности. Любую группу безопасности можно применить к сколь угодно большому количеству сетевых интерфейсов.

Потому что так это работает и как это работает задокументировано.

Возможность применить группу безопасности к экземпляру - это просто синтаксический сахар. Как задокументировано, он применяет группу безопасности к основному сетевому интерфейсу этого экземпляра.