Как разрешить доступ к контенту в Amazon S3 только определенному пользователю

Я новичок в Amazon S3. Мне нужна помощь с решением для хранения S3. Здесь моя проблема.

Я создал ведро в Amazon S3. Теперь каждый может получить доступ к моему URL корзины (например, https://bucket_name.s3.amazonaws.com/), и они смогут увидеть все файлы внутри корзины. Я хочу, чтобы только пользователи мобильных приложений могли просматривать / просматривать / загружать файлы в корзине. Но если я заблокирую файлы / сделаю файлы в корзине закрытыми, пользователи мобильных приложений не смогут просматривать его / ее файлы.

Итак, вопрос:

  • Есть ли способ обезопасить доступ к AWS S3? или Как я могу разрешить доступ к контенту в Amazon S3 только определенному пользователю? Это проверка подлинности на стороне сервера или что-то еще?

Если у вас есть идеи, как это можно сделать, вы можете показать мне пример? Спасибо:)

ПРИМЕЧАНИЕ. Я использую Parse JavaScript SDK, AWS S3, AWS EC2, Elastic beanstalk и Ionic 2 с Angular 2.

Если вы думаете, что я пропустил какие-либо детали, пожалуйста, дайте мне знать, чтобы я мог добавить это:)

2 ответа

Решение

Существует несколько вариантов безопасного доступа для определенных пользователей.

  • Если вы используете AWS Cognito, вы можете предоставить доступ к определенным сегментам и объектам в S3 с помощью политик IAM с помощью AWS JavaScript SDK и временно получить доступ к учетным данным, которые вы получили после аутентификации с помощью AWS Cognito (или объединения через Cognito) непосредственно из приложения Angular.
  • Вы также можете использовать подписанные URL-адреса и подписанные cookie-файлы AWS CloudFront для безопасного доступа к объектам S3. Чтобы получить доступ к содержимому, используя внутреннюю конечную точку (для аутентифицированных пользователей), вы можете сгенерировать подписанный URL-адрес или подписанный cookie-файл, который будет использоваться приложением Angular для доступа к S3 через CloudFront.
  • Другой вариант - получить доступ к S3 со стороны сервера и вернуть файлы (по сравнению с другими подходами это приведет к значительным издержкам при масштабировании на вашем сервере, поэтому не рекомендуется, если у вас нет определенного сценария для динамического изменения файлов или содержимого перед извлечением)
  • Вы также можете использовать AWS API Gateway в качестве прокси-сервера для S3 для обслуживания файлов. Здесь применяется ограничение размера файла 10 МБ, так как API Gateway может передавать файлы максимум до 10 МБ.

Вы можете S3 получить доступ к определенной роли IAM. Поэтому создайте нового пользователя и присоедините к нему политику IAM. Настройте свою лямбду с этой ролью. Если вы хотите, вы можете создать несколько ролей, зависит от типа каждого пользователя (Пример:- Роль уникально для мобильных пользователей, другая роль для пользователей настольных компьютеров и т. Д.)

Подробнее о том, как ограничить доступ Amazon S3 Bucket к определенной роли IAM, читайте здесь.

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