Как мобильное приложение должно проходить аутентификацию в AWS

#amazon-web-services #amazon-cognito #amazon-iam

#amazon-веб-сервисы #amazon-cognito #amazon-iam

Вопрос:

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

Моим первым решением было создать пользователя IAM, выделенного для мобильного приложения, и внедрить его учетные данные в код мобильного приложения. Приложение проходит аутентификацию в AWS, используя встроенные учетные данные. Это работает, однако AWS предлагает избегать встраивания учетных данных непосредственно в приложение.

Я думаю, что лучшим решением является Cognito. Поскольку мне не нужно управление пользователями, я должен использовать неаутентифицированный (гостевой) идентификатор для запроса временных учетных данных AWS.

Однако я не понимаю, почему гостевая идентификация Cognito более безопасна, чем встроенные учетные данные. Мобильное приложение получает временные учетные данные AWS, отправляя идентификатор пула удостоверений Cognito, который представляет собой долгосрочный «номер», встроенный в мобильное приложение. Если кто-то сможет найти этот идентификатор пула удостоверений, он сможет получить учетные данные AWS и получить доступ к ресурсам AWS в качестве моего официального мобильного приложения. Кажется, нет никакой разницы между встроенными долгосрочными учетными данными AWS и доступом huest Cognito.

Почему решение Cognito лучше встроенных учетных данных AWS?

Ответ №1:

Если вы создаете несанкционированный доступ с помощью пула удостоверений, вы разрешаете общедоступный доступ к вашим ресурсам AWS. Убедитесь, что вы тщательно прописали свою политику, и с точки зрения безопасности не будет иметь значения, используете ли вы одного пользователя IAM или неаутентифицированный доступ cognito.

Использование федеративной идентификации предоставит вам такие преимущества, как получение статистики использования и добавление триггеров к событиям. Также имейте в виду, что создание одного пользователя IAM, а затем разрешение нескольким пользователям использовать эти учетные данные — это «хакерский» способ сделать то, для чего была разработана неаутентифицированная идентификация cognito federated. Позже вы можете столкнуться с неожиданными осложнениями, если AWS решит ограничить такое поведение IAM.

Комментарии:

1. Меня не интересует статистика использования. Что вы подразумеваете под «добавлением триггеров к событиям»?

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