#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 просто потому, что он был разработан для вашего варианта использования.