Я безуспешно пытаюсь использовать конечную точку AWS VPC для доступа к ресурсу S3. Не могли бы вы помочь?
Подробности:
У меня есть экземпляр EC2 внутри группы безопасности. Это внутри VPC и подсети с конечной точкой Интернета и записью в таблице маршрутизации для 0.0.0.0/0. Однако я не хочу, чтобы этот конкретный экземпляр EC2 мог разговаривать с Интернетом, но я хочу, чтобы он мог разговаривать с сегментом S3, расположенным в https://s3-eu-west-1.amazonaws.com/XXXXX/YYYYYY.sh.
В ответ я перегрузил правило разрешения выхода по умолчанию для securityGroup, поэтому исходящие соединения запрещаются путем добавления правила выхода к порту 22. В документации amazon говорится, что локальные (частные) адреса AWS по-прежнему будут разрешены. Имея это в виду, я добавил конечную точку VPC в свой VPC и обновил свою таблицу маршрутизации с помощью pl-6da54004 (com.amazonaws.eu-west-1.s3) :: vpce-9f47a1f6.
После этого я не могу получить доступ к своему ресурсу S3 из экземпляра EC2. Я пытаюсь и получаю https://s3-eu-west-1.amazonaws.com/XXXXX/YYYYYY.sh без везения.
Вы хоть представляете, что не так? Мои мысли:
Спасибо, Тоби
Во-первых, немного предыстории. Преобразователь 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 и политики ACL Amazon S3 (если они есть) - должны предоставлять необходимые разрешения для доступа к 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
Ну ... нет, это не так. Не для меня, по крайней мере, на момент написания этой статьи.
Решение состоит в том, чтобы выбрать «Пользовательский IP-адрес», а затем вместо блока IP-адресов или идентификатора группы безопасности ввести идентификатор списка префиксов для конечной точки VPC в виде pl-xxxxxxxx
в поле для IP-адреса. Вы можете найти это в консоли VPC, посмотрев на места назначения в одной из подсетей, связанных с конечной точкой VPC.