AWS Elasticsearch создает API-ключ

Я создал сервис elasticsearch в AWS с помощью AWS CDK. Первоначально я думал получить доступ к нему с помощью IAM, но способ сделать это в узле - какой ужас, поэтому я обратился к аутентификации через api-key.

Если я следую elasticsearch документы, я получаю следующую ошибку: AuthenticationException(401, '{"Message":"Your request: \'/_security/api_key\' is not allowed."}')

Я предполагаю, что это связано с тем, что мой пользователь по умолчанию не имеет прав для доступа к API _security, но как тогда я могу создать указанный API-ключ?

Я не думаю, что x-pack поддерживается в AWS ElasticSerach. попробуйте библиотеку это, упрощает отправку подписанных запросов в эластичный

Balu Vyamajala 01.04.2021 01:57

К сожалению, эта библиотека предназначена для клиента elasticsearch, который скоро будет устаревшим. Вы правы, API _security не поддерживается AWS elasticsearch.

barmanthewise 03.04.2021 00:58
Здесь - еще одна библиотека. Как правило, нет обходного пути для отправки подписанных запросов, будь то шлюз Api, RDS или другой сервис AWS для использования IAM Auth. Поначалу это выглядит безумно, но подписывать довольно просто, как только мы к этому привыкнем.
Balu Vyamajala 03.04.2021 04:43

Спасибо, чувак, это действительно работает. В любом случае это временное решение, так как мне нужно будет предоставить эту услугу третьей стороне, которая не может пройти аутентификацию через IAM. Думаю, я размещу elasticearch на EKS, чтобы получить доступ к полному сервису, включая _security API. Если вы захотите превратить свои комментарии в ответ, я с радостью его приму.

barmanthewise 06.04.2021 12:23
0
4
28
1

Ответы 1

Из комментариев:

Security API является частью x-pack, который пока не поддерживается сервисом AWS Elasticserach. если нам нужно использовать его в AWS, можно использовать его как SAAS из AWS MarketPlace. Однако есть и другие варианты защиты AWS Elasticsearch:

  • Использование когнитивных функций для обеспечения эластичности обеспечивает детальный контроль для пользователей с пулами удостоверений и ролями iam. Здесь - это некоторые детали.
  • IP на основе Политика ресурсов. Пока клиенты находятся в сети AWS / не AWS, принципал «*» с условиями ограничивается диапазоном cidr. Любой может получить доступ, нет детального доступа для пользователей в пределах того же диапазона ip cidr.
  • Аутентификация IAM: обеспечивает детальный контроль, требуются учетные данные AWS через роль (также могут быть отдельные когнитивные данные) или кредит пользователя, чтобы подписывать HTTP-запросы с помощью подписи v4. Если мы вручную подписываем http-запрос, мы можем использовать aws4-знак. Нам просто нужно передать, service, region и body в параметры метода aws4.sign в дополнение к параметрам HTTP-запроса nodejs. Аналогично примеру здесь с сервисом es. Пара библиотек, которые обертывают эту подпись для эластичного, - это aws-es-соединение и http-aws-es.

Другие вопросы по теме