Доступ к пулу Cognito AWS из другой учетной записи с помощью NodeJS (на стороне сервера) - PullRequest
0 голосов
/ 12 января 2019

Мы работаем над приложением, в котором у нас два типа пользователей

  1. Индивидуальный пользователь (разрешено самостоятельно регистрироваться).
  2. Пользовательская часть агентства (добавляется в приложение только администратором, который является нашим внутренним пользователей).

Приложение разработано таким образом, что все операции Cognito, такие как добавление пользователя, удаление пользователя, сброс пароля и т. Д., Выполняются сервером API ( Поток аутентификации на стороне сервера ), работающим в AWS Lambda . Мы ничего не делаем на стороне клиента.

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

Мы знаем, как подключиться к пулу из другой учетной записи, отличной от NodeJS, и, предполагая, что мы создали все соответствующие роли и разрешения, мы даже пытались использовать полный ARN идентификатора пула, но API не разрешает ARN, ему нужно только идентификатор пула, и если мы используем только идентификатор пула, выдается сообщение об ошибке

пул не существует

Мы считаем, что он использует текущую учетную запись, а не другую учетную запись, в которой находится пул.

Пожалуйста, сообщите

Заранее спасибо

1 Ответ

0 голосов
/ 12 января 2019

Я предполагаю, что вы используете AWS SDK внутри NodeJS для подключения к пулу пользователей Cognito.

AWS SDK каким-то образом получит учетные данные для аутентификации на серверах AWS для определенной учетной записи AWS. Если вы не укажете код доступа / секретный ключ в своем коде (что, я надеюсь, не так!), SDK, вероятно, получит (временные) ключи из среды.

Вы можете настроить роль IAM, если вы запускаете NodeJS в контейнере Lambda или ECS. Если вы сделаете это, AWS создаст некоторые временные учетные данные и вставит их через переменные среды.

Чтобы подключиться к другой учетной записи AWS, обычно у вас есть два варианта:

  1. Использование политики ресурсов в другом ресурсе учетной записи AWS для предоставления доступа к работающей учетной записи AWS
  2. Введите учетные данные для вашего приложения вручную, например, добавив в Lambda переменные защищенной среды, которые можно использовать для доступа к другому пользователю IAM в другой учетной записи AWS.

Опция 1 в данный момент невозможна для Cognito User Pools (вы можете проверить в этой таблице , чтобы увидеть, какие службы поддерживают это).

Вариант 2 возможен для вашего сценария, основная хитрость - предоставить учетные данные безопасным способом. Как это сделать, зависит от конкретной среды, но в Lambda существует возможность использования безопасных переменных среды или параметров SSM.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...