Правило AWS VPC Endpoint SecurityGroupEgress

Правило AWS VPC Endpoint SecurityGroupEgress

Я пытаюсь использовать AWS VPC Endpoint для доступа к ресурсу S3, но безуспешно. Не могли бы вы помочь?

Подробности:

У меня есть экземпляр EC2 внутри группы безопасности. Это внутри VPC и подсети с конечной точкой интернета и записью таблицы маршрутизации для него для 0.0.0.0/0. Однако я не хочу, чтобы этот конкретный экземпляр EC2 мог общаться с интернетом, но я хочу, чтобы он мог общаться с S3 Bucket, расположенным по адресуhttps://s3-eu-west-1.amazonaws.com/XXXXX/YYYYYY.sh.

В ответ я перегрузил правило Egress по умолчанию для securityGroup, чтобы исходящие соединения были запрещены путем добавления правила выхода на порт 22. В документации Amazon говорится, что локальные (частные) адреса AWS по-прежнему будут разрешены. Имея это в виду, я добавил конечную точку VPC в свой VPC и обновил свою таблицу маршрутизации с помощью pl-6da54004 (com.amazonaws.eu-west-1.s3) :: vpce-9f47a1f6.

Сделав это, я не могу получить доступ к своему ресурсу S3 из моего экземпляра EC2. Я пробую wgethttps://s3-eu-west-1.amazonaws.com/XXXXX/YYYYYY.shбезуспешно.

У вас есть какие-нибудь идеи, что не так? Мои мысли таковы:

  • мой экземпляр ec2, похоже, разрешает домен S3 в 54.231.130.244, но это не то же самое для каждого экземпляра. Нужно ли мне добавлять правило securityGroupEgress или маршрут для диапазона IP-адресов S3? Если да, то каков диапазон?
  • Возможно, мне следует получать доступ к своим ресурсам S3 через другое доменное имя, которое вместо этого разрешалось бы во внутренний IP-адрес?

Спасибо, Тоби.

решение1

Сначала немного предыстории. DNS-резолвер для экземпляров VPC — это виртуальный компонент, встроенный в инфраструктуру. Он невосприимчив к правилам исходящей группы безопасности... но разрешение имен хостов для конечных точек S3 не меняется, когда вы предоставляете конечную точку S3 для вашего VPC.

То, что делает конечная точка VPC для S3, — это несколько разных вещей. Понимание того, что это за вещи, является ключом к пониманию того, будет ли она делать то, что вам нужно. tl;dr: будет, в данном случае.

Во-первых, вы замечаете, что они настроены в таблицах маршрутизации как «списки префиксов». Конечная точка VPC берет набор предопределенных сетевых префиксов IPv4 и перехватывает маршруты к этим префиксам для каждой таблицы маршрутизации, которая включает соответствующий список префиксов, так что ваш трафик в любую из этих сетей будет проходить через конечную точку VPC вместо интернет-шлюза и любого промежуточного экземпляра NAT.

По сути, это открывает новый путь из вашего VPC в диапазоны IP-адресов сервиса AWS... но изначально эти IP-адреса ведут вас не туда, куда они бы вас привели без конечной точки VPC.

Первое место, куда вы попаливыглядит так же как S3но он не идентичен S3, ориентированному на Интернет, поскольку он знает о политиках вашей конечной точки VPC, так что вы можете контролировать, какие контейнеры и действия доступны. Они не переопределяют другие политики, они дополняют их.

Политика конечной точки не переопределяет и не заменяет политики пользователя IAM или политики контейнера S3. Это отдельная политика для управления доступом из конечной точки к указанной службе. Однако все типы политик — политики пользователя IAM, политики конечной точки, политики S3 и политики Amazon S3 ACL (если таковые имеются) — должны предоставлять необходимые разрешения для успешного доступа к Amazon S3.

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html#vpc-endpoints-access

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

Теперь самое сложное. Если группа безопасности вашего экземпляра не разрешает исходящий доступ к S3, поскольку правило «разрешить» по умолчанию было удалено, вы можете разрешить экземпляру доступ к S3 через конечную точку VPC с помощью специально созданного правила группы безопасности:

Добавьте новое исходящее правило в группу безопасности. Для «типа» выберите HTTPS. Для назначения выберите «Пользовательский IP».

Документация не соответствует тому, что я вижу в консоли:

В списке пунктов назначения отображаются идентификаторы префиксов и имена доступных сервисов AWS.

http://docs.aws.amazon.com/AmazonVPC/latest/UserGuide/vpc-endpoints.html#vpc-endpoints-security

Ну... нет, не имеет. По крайней мере, для меня, на момент написания этой статьи.

Решение состоит в том, чтобы выбрать «Custom IP» и затем вместо блока IP-адресов или идентификатора группы безопасности ввести идентификатор списка префиксов для вашей конечной точки VPC в форме pl-xxxxxxxxв поле для IP-адреса. Вы можете найти его в консоли VPC, просмотрев пункты назначения в одной из подсетей, связанных с конечной точкой VPC.

Связанный контент