Могу ли я безопасно использовать Amazon Elasticsearch с поисковым пазлом Rails?
Я хочу знать, если и как я могу безопасно использовать searchkick с Elasticsearch Amazon.
Сильфон представляет собой изображение параметров доступа. IP-адрес не идеален, так как IP-адрес сервера может измениться.
Если я ограничу доступ к одной или нескольким учетным записям AWS или пользователям IAM, я не уверен, как проходить аутентификацию из приложения rails.
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