Публичный ELB, доступный только через шлюз API

Есть ли способ ограничить мой ELB приемом вызовов только от шлюза API? Я предполагаю, что если это возможно, это можно сделать с помощью сертификата на стороне клиента шлюза API.

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


person Adam Ocsvari    schedule 07.01.2016    source источник
comment
В этой записи блога AWS описывается решение проблемы. Однако я не смог заставить его работать. aws.amazon.com /блоги/вычисления/   -  person samuelkf    schedule 17.06.2016
comment
Вы можете проксировать свой трафик из шлюза API через AWS Lambda, чтобы достичь ELB в VPC. Для справки следуйте Запись в блоге AWS.   -  person sudheerchamarthi    schedule 31.08.2017


Ответы (1)


Вы правы, клиентский сертификат TLS (SSL) на задней стороне шлюза API мог бы справиться с этим, но ELB в настоящее время не поддерживает сертификаты на стороне клиента при работе в режиме http .

В сообщениях на форуме поддержки AWS персонал AWS упоминает о рассмотрении этой возможности как о запросе функции, но:

К сожалению, в данный момент мы не можем предоставить ETA для этого.

https://forums.aws.amazon.com/thread.jspa?threadID=58561&start=0&tstart=0

Конечно, если бы ELB работал в режиме TCP вместо HTTP, то ваши веб-серверы могли бы обрабатывать все SSL, включая проверку сертификата на стороне клиента, но режим TCP не имеет тех же преимуществ, что и режим HTTP в ELB.

Мое решение для этого — HAProxy, работающий на отдельном экземпляре, выполняющий те же функции, что и ELB, включая терминацию SSL и проверку сертификата клиента. Экземпляр открыт для всего мира через порт 443, но только соединения SSL, в которых представлен сертификат клиента шлюза API, могут продолжать согласование SSL и выполнять фактический HTTP-запрос, который передается одному из серверных экземпляров.

HAProxy — это очень компактный код, и у меня есть системы, которые ежедневно обрабатывают сотни тысяч запросов с помощью SSL на экземплярах t2.micro. Я также успешно протестировал его на новых инстансах t2.nano, которые стоят ‹ 5 долларов в месяц за машину, что не составляет труда, и некоторые из них скоро будут запущены в производство на системах с относительно низким трафиком... просто следите за своим кредитным балансом, чтобы знать, когда вам нужно увеличить его.

Вы также можете разместить экземпляры HAProxy за ELB в режиме TCP с включенным прокси-протоколом, если вы хотите, чтобы внешний интерфейс с выходом в Интернет обеспечивался ELB, с несколькими экземплярами HAProxy между ELB. и серверы приложений. Это обычная конфигурация для меня, потому что HAProxy имеет возможность HTTP-маршрутизации, позволяющую выбирать внутреннюю группу серверов для каждого запроса, так что, например, example.com/api может находиться на одном наборе серверов, а example.com/blog может быть в другом наборе, все под одним и тем же доменным именем. (Это также надежный способ интеграции контента S3 без проблем с перекрестным происхождением, поскольку прокси-сервер может, например, перенаправлять запросы для определенных путей в корзину S3).

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

person Michael - sqlbot    schedule 07.01.2016