Могу ли я безопасно использовать Amazon Elasticsearch с поисковым пазлом Rails?

Я хочу знать, если и как я могу безопасно использовать searchkick с Elasticsearch Amazon.

Сильфон представляет собой изображение параметров доступа. IP-адрес не идеален, так как IP-адрес сервера может измениться.

Если я ограничу доступ к одной или нескольким учетным записям AWS или пользователям IAM, я не уверен, как проходить аутентификацию из приложения rails.

Параметры доступа к Amazon Elasticsearch

1 ответ

Решение

Вы можете отправлять подписанные безопасные запросы в Amazon Elasticsearch из Ruby. Я сделал следующее с приложением на Heroku.

Убедитесь, что у вас есть камень упругого поиска>= v1.0.15, поскольку поддержка этого была реализована только 4 декабря 2015 года.

Вам также нужен этот драгоценный камень:

gem 'faraday_middleware-aws-signers-v4'

Пример из документации эластичного поиска-рубина / эластичного поиска-транспорта:

Вы можете использовать любое стандартное промежуточное ПО и плагины Фарадея в блоке конфигурации, например, подписывать запросы на сервис AWS Elasticsearch:

Со следующим кодом:

require 'faraday_middleware/aws_signers_v4'

client = Elasticsearch::Client.new(url: ENV['AWS_ENDPOINT_URL']) do |f|
  f.request :aws_signers_v4,
            credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']),
            service_name: 'es',
            region: 'us-east-1'
end

Это также работает с гемом searchkick с Rails. Установите Searchkick.client, используя приведенный выше пример, в инициализаторе:

# config/initializers/elasticsearch.rb
require 'faraday_middleware/aws_signers_v4'

Searchkick.client = Elasticsearch::Client.new(url: ENV['AWS_ENDPOINT_URL']) do |f|
  f.request :aws_signers_v4,
            credentials: Aws::Credentials.new(ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']),
            service_name: 'es',
            region: 'us-east-1'
end
Другие вопросы по тегам