Авторизация между AWS API Gateway и Elastic Cloud размещена Elasticsearch - PullRequest
0 голосов
/ 03 июля 2018

Мы настраиваем прокси-сервер AWS API Gateway перед Elasticsearch, развернутым в Elastic Cloud (для регулирования, планов использования и других причин). Для аутентификации между шлюзом и ES одна идея состоит в том, чтобы настроить запрос интеграции на ресурсе API-шлюза, чтобы добавить заголовок авторизации с кредитами, созданными в ES. Это лучшая стратегия? Кажется, что он уступает ролям IAM, но эта опция недоступна, поскольку они недоступны для экземпляра ES (Elastic Cloud размещает наше развертывание на AWS, но это не ресурс, находящийся под нашим контролем). Для самого шлюза API потребуется ключ API.

1 Ответ

0 голосов
/ 09 июля 2018

Я не эксперт в Elasticsearch, но, похоже, вы хотите безопасно переслать запрос от шлюза API в другой веб-сервис REST. Поскольку Elasticsearch является внешней веб-службой REST для AWS, у вас не будет доступа к ролям IAM. У меня была аналогичная интеграция с другой службой облачного отдыха (не эластичной поисковой системой), и я приложу все усилия, чтобы рассмотреть инструменты AWS, доступные для выполнения запроса.

Одна из идей - настроить запрос интеграции на ресурсе API Gateway, чтобы добавить заголовок авторизации с кредитами, созданными в ES. Это лучшая стратегия?

Это самая простая стратегия. В API Gateway вы можете отобразить пользовательские заголовки в запросе интеграции. Здесь вы сопоставите свой заголовок авторизации для Elastic Search.

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

В обеих стратегиях вы храните свой заголовок авторизации в API Gateway. Поскольку запрос к Elasticsearch должен быть HTTPS, данные будут в безопасности при передаче. Этот поток содержит дополнительную информацию о хранении учетных данных в API Gateway.

От MikeD @ AWS: В настоящее время нет известных проблем с использованием переменных этапа для управления учетными данными; однако переменные стадии не были специально разработаны, чтобы быть безопасным механизмом управления учетными данными. Как и вся информация о конфигурации API-шлюза, переменные этапа защищены стандартными разрешениями и политиками AWS и шифруются при передаче по проводам. Внутренне переменные этапа рассматриваются как конфиденциальная информация о клиенте.

Я думаю, что это относится к вашему вопросу. Вы можете сохранить заголовок авторизации в прокси-сервере шлюза API, однако вы должны признать, что информация о конфигурации шлюза API не была явно предназначена для конфиденциальной информации. При этом нет никаких известных проблем с этим. Этот подход наиболее прост в настройке, если вы готовы принять этот риск.

Что такое более подход "AWS"?

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

Аналогично учебнику , указанному в комментариях, вы захотите перенаправить свой запрос от API Gateway к Lambda. Вы будете нести ответственность за создание HTTPS-запроса к Elasticsearch на выбранном вами языке. Есть несколько руководств по этому вопросу, но это официальная документация AWS . AWS предоставляет чертежи в качестве шаблона для запуска лямбда-функции. Проект https-request будет работать.

Как только запрос пересылается из API-шлюза в Lambda, настройте заголовок авторизации для Lambda-запроса как Переменная среды и внедрите Шифрование переменной среды . Это безопасный рекомендуемый способ хранения конфиденциальных данных, таких как заголовок авторизации Elasticsearch.

Этот подход потребует дополнительной настройки, но использует службы AWS по назначению.

Мое мнение : Первоначально я использовал первый подход (заголовки авторизации в API Gateway) для аутентификации с помощью экземпляра dev, потому что это было быстро и легко, но, узнав больше, я решил, что второй подход был более согласовано с AWS Well Architected Framework

...