Необходимо ли AWS федеративные удостоверения, если единственным ресурсом AWS, с которым взаимодействует пользователь, является API Gateway? - PullRequest
0 голосов
/ 07 апреля 2020

В настоящее время я изучаю использование федеративных удостоверений, и из многих примеров, которые я прочитал, представляется, что это способ предоставить пользователям временные учетные данные для различных AWS сервисов. В моем случае, API-шлюз - это все, с чем пользователь будет взаимодействовать, поскольку именно сервер API выполняет вызовы других служб, таких как S3 и DynamoDB. Мне нравится, как разрешения контролируются с помощью IAM, но я не вижу других обращений федеративных удостоверений. Сам пользовательский пул уже поддерживает пароль / fb / google / et c для входа, единственный недостаток, который я вижу с пулами пользователей, - это то, что мне нужно будет выполнить авторизацию вручную на уровне API. Есть ли еще что-то, чего мне не хватает в федеративных удостоверениях? Стоит ли это, учитывая мое использование только шлюзов API (внешне).

1 Ответ

2 голосов
/ 07 апреля 2020

Все зависит от того, как вы защитите свою конечную точку шлюза API.

Если вы защищаете свой API с помощью AWS IAM, вам потребуется способ преобразования ваших токенов аутентификации в AWS Роли IAM. Для этого сценария вы можете использовать AWS Cognito Idp (не пул пользователей) или AWS Федеративные удостоверения. Разница в том, что при использовании AWS федеративных идентификаторов IAM вам потребуется вызвать AWS STS AssumeRoleWithWebIdentity в коде внешнего интерфейса. Если вы используете AWS Cognito Idp, это сделано для вас. , (AWS настоятельно рекомендует вам использовать Cognito Idp в этом сценарии)

Если вы защищаете свой API с помощью AWS Cognito User Pools , вам не нужно использовать AWS Федеративные идентичности. Вы можете напрямую подключить API-шлюз к AWS Cognito, и служба обеспечит контроль за вами. В этом случае вам понадобится пул пользователей Cognito.

У вас также есть выбор использования пользовательских авторизаторов . В этом сценарии вы реализуете лямбда-функцию, которая оценит ваш запрос и решит, авторизован он или нет. Точно так же вам не понадобятся федеративные удостоверения.

И, наконец, у вас есть авторизация API Key, о которой вы уже упоминали, которая не применима к вашему варианту использования.

...