Я хочу, чтобы мои клиенты говорили напрямую с API ElasticSearch REST, что явно мешает им выполнять какие-либо изменения данных или конфигурации.
Я посмотрел на интерфейс ElasticSearch REST, и я заметил шаблон: HTTP GET-запросы довольно безопасны (безобидные запросы и статус кластера).
Итак, я думал, что могу использовать Cloudfront в качестве CDN/Proxy, который поддерживает только методы GET/HEAD (вы можете наложить такие ограничения в основной конфигурации).
Пока все хорошо, все настроено. Но все не работает, потому что мне нужно будет открыть мою группу безопасности EC2 для мира, чтобы быть доступным из Cloudfront! Я не хочу этого, действительно!
Когда я использую EC2 с RDS, я могу просто разрешить доступ к моей группе безопасности EC2 в группах безопасности RDS. Почему я не могу сделать это с помощью CloudFront? Или я могу?
Идеи?
изменить. Он не задокументирован, но ES принимает запрос фасетов, который включает тело (JSON) не только с POST, но и с GET. Это просто нарушает рекомендацию HTTP (как для RFC3616), не игнорируя тело для запроса GET (источник). Это связано с тем, что, как указано, непосредственный интерфейс ES REST может привести к легким атакам DOS с использованием сложных запросов. Я все еще убежден, что, имея еще один прокси-сервер, все еще стоит того.
edit. Другим вариантом для меня было бы пропустить CloudFront и добавить уровень безопасности в качестве плагина ElasticSearch, как показано здесь