Политика Amazon Bucket только для доступа к мобильным приложениям

У меня есть корзина в Amazon S3, и я устанавливаю данные внутри только для чтения для всех. Однако это не то, что я хочу. Я хотел бы, чтобы эти данные были доступны только из моего мобильного приложения и ограничивали их загрузку по URL.

Это возможно? если так, как реализовать такую ​​политику ведра?

2 ответа

Решение

Традиционно доступ к мобильному приложению осуществляется следующим образом:

  • Пользователь мобильного приложения проходит аутентификацию на вашем сервере (через ваше мобильное приложение). Это может быть сделано с помощью Amazon Cognito или с вашей собственной базой данных имени пользователя / пароля.
  • Ваше приложение проверяет их личность и определяет, к каким данным им разрешен доступ. Затем он использует сервис маркеров безопасности AWS (STS) для генерации ограниченных по времени учетных данных с ограниченными разрешениями (например, доступ к определенному каталогу в сегменте S3). Внутреннее приложение отправляет эти учетные данные в мобильное приложение.
  • Затем мобильное приложение может использовать учетные данные для вызова API-интерфейсов для AWS (без необходимости проходить через ваш внутренний сервер).

Если вы хотите, чтобы любой пользователь в вашем мобильном приложении имел доступ к корзине S3, то пользователю не нужно проходить аутентификацию на первом шаге - просто ваше мобильное приложение запросило некоторые временные учетные данные.

Ничто из вышеперечисленного не требует Bucket Policy. Разрешения будут предоставляться для учетных данных службы STS, а не для него.

Не существует прямого способа установить специфичные для клиента политики в сегментах S3, но ваш вариант использования может быть реализован другими способами.

Способ 1 - Установите реферер HTTP-запросов в своих мобильных приложениях и создайте политики на S3, которые соответствуют этому рефереру.

Способ 2 - перенаправить все ваши запросы через сервер, который соответствует типу клиента и добавляет несколько условий в запросе. Эти условия могут быть обработаны в политиках S3.

Способ 3 - перенаправить все запросы вашего приложения через сервер, ip которого занесен в белый список в корзине S3. Хотя здесь вы должны использовать какой-нибудь прокси-сервер или loadbalancer.

Вот официальный документ S3 для политик и условий доступа - http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html

Надеюсь это поможет!

Другие вопросы по тегам