Сигурен начин за изтегляне на съдържание на AWS S3 от мобилно приложение

Изявление на проблема: Искам да изтегля S3 съдържание чрез мобилно приложение от множество мобилни устройства.

Решение, на което попаднах.

Разтвор 1

  1. Създайте IAM потребител в AWS. Създайте политика за изтегляне на S3 съдържание само за конкретна кофа и задайте тази политика на IAM потребител.
  2. Всеки път, когато мобилното приложение иска да изтегли съдържание от S3, мобилното приложение ще извика моя сървър API, който ще върне идентификационните данни на IAM потребителя.
  3. След това мобилното приложение ще използва тези идентификационни данни, за да изтегли съдържанието на S3.

Решение 2

  1. Използвайте услугата AWS Cognito.

Проблемът с първия подход обаче е, че ще трябва да управлявам идентификационните данни от страна на сървъра. Освен това някой може лесно да го проследи и да използва тези идентификационни данни извън приложението, за да изтегли съдържание.

Вторият подход не ми е напълно известен. Въпреки това в често задаваните въпроси за услугата AWS COGNITO не намерих никакво решение на моето изискване, въпреки че ви позволява да четете, изтривате и поставяте съдържанието във всяка услуга на AWS.

Имам нужда от предложение относно сигурно изтегляне на S3 съдържание от мобилни приложения.


person Chaitanya Bijawe    schedule 13.05.2015    source източник


Отговори (1)


Amazon Cognito и AWS Mobile SDK са проектирани специално за случай на използване на изтегляне на съдържание, съхранено в S3, от мобилно приложение. Можете да използвате Cognito, за да предоставите временни идентификационни данни за AWS с ограничени привилегии на всеки потребител на вашето приложение. Можете да разрешите на вашите потребители да започнат да използват приложението ви като неупълномощени гости и/или да се удостоверят със социални влизания или ваша собствена услуга за регистрация/влизане.

За да настроите Cognito, използвайте конзолата на Cognito, за да създадете Identity Pool, който е хранилище на данни за самоличността на потребителя, специфични за вашия AWS акаунт. IAM ролите определят разрешенията за вашите потребители за достъп до AWS ресурси, като S3. Потребителите на вашето приложение ще поемат ролите, които създавате. Можете да зададете различни роли за удостоверени и неавтентифицирани потребители. За да научите повече за IAM ролите в Cognito, вижте IAM роли.

Когато посетите Cognito Console, съветник ще ви преведе през създаването на групата за самоличност и необходимите IAM роли. Интеграцията между Cognito (която издава идентификационни данни за AWS на потребителя на мобилното приложение) и другите услуги на AWS е в инициализацията на SDK. Примерен код за инициализиране на SDK с Cognito на iOS, Android, Unity и JavaScript са в Тема за получаване на идентификационни данни от ръководството за разработчици на Amazon Cognito].

Актуализации през октомври 2020 г.: AWS прехвърли своя Mobile SDK към AWS Amplify. Amplify все още използва Cognito за удостоверяване (вход) и оторизация (идентификационни данни/разрешения), така че горното все още е точно. Можете да получите конкретни указания относно използването на Cognito с Amplify за настройка на удостоверяване тук. След като настроите удостоверяване в Amplify, конкретен пример за използване на S3 е тук.

Имайте предвид, че документите на Cognito се фокусират върху Потребителски групи в наши дни, които ви позволяват да внедрите своя собствена пълноценна директория за съхранение и влизане на потребители (за цена). Не е нужно обаче да използвате потребителската директория на Cognito, за да съхранявате вашите потребители. Cognito Identity Pools (които все още нямат цена AFAICT) ви позволяват да получавате AWS идентификационни данни за потребители, които не са влезли в приложението ви (т.нар. неупълномощени самоличности) и/или позволяват на потребителите да влизат с друг потребител директории (като социални входове или потребителска директория, която притежавате и управлявате).

Ако искате крайна гъвкавост, можете също да използвате AWS STS, за да получите идентификационни данни за достъп до AWS ресурси, включително S3. Въпреки това, с гъвкавостта на STS идва необходимостта от повече разбиране на IAM/AWS и може би по-сложна настройка.

Моля, коментирайте, ако има нещо, което мога да направя, за да стане това по-ясно!

person Scott Willeke    schedule 13.05.2015
comment
Благодаря @Scott Willeke Опитах това и работи много добре за мен. Имам малък въпрос тук процесът на генериране на ID, токен и след това временна парола се таксува от cognito? В моето приложение няма да използваме никакво друго средство, предоставено от cognito като синхронизиране, имам нужда само от временни пароли, за да изтегля съдържание от s3, това е. - person Chaitanya Bijawe; 15.05.2015
comment
Напълно добре е да използвате функциите за самоличност на Cognito само за получаване на идентификационни данни за извикване на други AWS услуги като S3. Това е най-добрата практика на AWS, Cognito е безплатен за тази цел и не е необходимо да използвате Cognito Sync. Ако все още имате друг въпрос, моля, отговорете. - person Scott Willeke; 15.05.2015
comment
Здравей, @ScottWilleke Вашият отговор все още ли е верен през 2020 г.? Има ли други алтернативи чрез AWS? - person Omar Dulaimi; 05.10.2020
comment
@OmarDulaimi Благодаря за въпроса! Огледах се и актуализирах този отговор въз основа на това как виждам как се развиват нещата. Отбележете ме отново, ако все още имате въпроси. - person Scott Willeke; 08.10.2020