#amazon-web-services #aws-api-gateway #amazon-cognito
Вопрос:
У меня есть сервер Django, работающий на компьютере EC2, который также обслуживает пользовательский интерфейс, созданный Vue.js. Для проверки подлинности и управления пользователями, связанных с вещами, я представил сервис Cognito. Я также использую пользовательский интерфейс, размещенный на Cognito, для входа в систему, регистрации и т. Д. Я также использую API-шлюз, чтобы убедиться, что API-интерфейсы Django REST недоступны без аутентификации.
В моем шлюзе API есть два маршрута:
- /api/{x} это для вызовов REST, и это авторизация Cognito с использованием токена на предъявителя.
- Маршрут с подстановочным знаком для остальных URL-адресов, связанных с пользовательским интерфейсом (они не авторизованы).
Оба маршрута интегрированы с сервером Django, работающим на компьютере EC2.
Все работает отлично, когда я вызываю URL-адрес шлюза API. Интеграция Cognito работает как драгоценный камень. Но проблема в следующем: когда я пытаюсь получить доступ к серверу Django, используя общедоступный IP-адрес машины EC2. Я могу позвонить остальным без аутентификации, используя общедоступный IP-адрес.
Вот тут я и застрял. Как преодолеть такой сценарий? Как я могу ограничить доступ по общедоступному IP-адресу? Или есть ли лучший подход, которому я должен следовать?
Я очень новичок в AWS. Любое предложение с вашей стороны приветствуется.
Ответ №1:
Вы можете исключить публичный доступ к своему экземпляру Django EC2, ограничив веб-трафик в группе безопасности EC2, подключенной к экземпляру EC2. Затем создайте балансировщик сетевой нагрузки в том же VPC, что и ваш экземпляр, и разрешите веб-трафик на ваш экземпляр django из подсетей, связанных с VPC, через вашу группу безопасности.
Наконец, создайте ссылку VPC для шлюза API, который использует вновь созданный NLB в качестве конечной точки. Это позволит шлюзу API направлять запросы, входящие в экземпляр EC2, через связанный балансировщик сетевой нагрузки (обеспечивая аутентификацию Cognito), одновременно предотвращая попадание интернет-трафика в целом в экземпляр EC2 без пересылки через шлюз API.