Мы разрабатываем приложение для Android, которое не будет распространяться ни в одном магазине. На самом деле он встроен в медицинское устройство, которое будет распространено среди наших пользователей (то есть пациентов). Таким образом, мы контролируем аудиторию. Даже если терминал украден, он будет отключен на сетевом уровне (SIM-карта заблокирована).
Все коммуникации будут проходить через выделенный APN (в основном соединение через виртуальную частную сеть). Таким образом, мы можем обеспечить связь только наших распределенных устройств с нашими серверными ресурсами. Также мы можем контролировать IP-адреса парка устройств.
Что касается сервисов AWS, мы используем S3 из приложения Android для хранения некоторых файлов пациентов. Мы, вероятно, расширимся на другие сервисы AWS. Мы явно используем Android SDK в устройстве.
В настоящее время мы используем ключ доступа разработчика, общий для всех терминалов. Это выглядит как утечка безопасности: в случае кражи одного устройства хакер может получить эти общие учетные данные и потенциально использовать их для хакерской деятельности, а это означает, что весь парк терминалов будет взломан. Следовательно, мы ищем более надежное решение.
Какие есть варианты подключения к AWS при условии, что мы запускаем через выделенную APN?
Чтобы наложить некоторые ограничения, мы бы предпочли не регистрировать каждое устройство до того, как оно сможет взаимодействовать с нашими сервисами AWS (я так понимаю, именно так работает Cognito User Pool: есть пул предварительно зарегистрированных пользователей / идентификаторов) , Вместо этого мы предпочли бы, чтобы идентификация устройства была получена в момент первого подключения.
Наша лучшая ставка на данный момент - использование Cognito Identity Pools, что похоже на выдачу удостоверений без какой-либо предварительной регистрации.
Рассматриваются 2 варианта: использование доступа «неаутентифицированный / гостевой» или создание «Поставщика аутентификации разработчика» для выполнения проверки личности запрашивающей стороны перед тем, как пул идентификаторов будет выдавать токены.
Как только устройство авторизовано, оно обменивается токенами с AWS STS, чтобы получить временные учетные данные для любой службы AWS, авторизованной для этого удостоверения.
Теперь у меня есть вопросы :)
Имеет ли смысл использовать Cognito Identity Pool здесь? Можем ли мы использовать только неаутентифицированный / гостевой доступ (при условии, что мы находимся внутри VPN)? Или реализовать кусок аутентификации в середине необходим?
Правильно ли я понимаю рабочий процесс с STS?
Любая другая мысль?
Большое спасибо за вашу помощь и время, проведенное в этом посте.
Удачного кодирования!
Приветствия
Фабрис