Для управления доступом с помощью роли IAM, один из вариантов - использование Cognito Identity Pool, после входа в Cognito User Pool и получения токена JWT.
Представьте токен JWT в Identity Pool и получите токен AWS STS, связанный с ролью IAM, которую вы настроили в Cognito Identity Pool.
Пожалуйста, обратитесь к Доступ к AWS Службы, использующие пул удостоверений после входа в систему
Обратите внимание на разницу между пулом пользователей и пулом удостоверений, поскольку они представляют собой разные службы, но имеют одно и то же имя «Cognito», что может сбивать с толку.
Пул пользователей - это просто еще один сервис аутентификации, такой как auth0 или Google, Facebook. Мы не ожидаем, что сможем контролировать доступ к ресурсам AWS с помощью токена, который выдает Google или Auth0 при входе в систему. Точно так же мы не можем контролировать доступ к AWS ресурсам с помощью токена, который предоставляет пул пользователей при входе в пул пользователей.
Документ Amazon довольно неоднозначен и часто смешивает пул пользователей и пул удостоверений. в том же документе, приводящем к путанице.
Чтобы иметь возможность контролировать доступ к ресурсу AWS, нам нужны роль IAM и токен AWS STS, которые в принципе не имеют ничего общего с самим пулом пользователей (как в случае с Google, Auth0, et c).
Нам нужен механизм для привязки токена пула пользователей к роли IAM. Есть несколько вариантов.
Использование Cognito Identity Pool Identity Pool - именно эта услуга для этой цели.
Использование сопоставления групп пула пользователей Cognito с ролью IAM.
В качестве альтернативы, мы можем использовать AWS javasdcript SDK для непосредственного получения токена STS, взяв на себя роль и используя ее.
Опять же, будьте осторожны с документацией Amazon, касающейся как пула пользователей, так и пула удостоверений. Лично им не следует смешивать разностные услуги в одном документе. Пул пользователей - это просто еще один сервис провайдера Identity Token, такой как Auth0, но Identity Pool - это сервис для сопоставления внешнего токена, такого как Google, Auth0 или Userpool, с ролью IAM.
Если придерживаться токена JWT пула пользователей, другой альтернативой может быть использовать API Gateway Cognito User Pool Authorizer. Настройте шлюз API, к которому имеют доступ только аутентифицированные пользователи пула пользователей, и шлюз API обслуживает веб-содержимое S3.
Также ALB имеет опцию аутентификации внешнего провайдера идентификации. Это можно использовать, чтобы разрешить доступ только пользователям, прошедшим аутентификацию в пуле пользователей.