2016-10-24 2 views
0

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

Но это решение не работает для моей учетной записи. Я получаю код ошибки 403 Access Denied.

Только когда я установил "Principals" : "*" , тогда файл доступен. Но мне нужно ограничить доступ только к зарегистрированным пользователям.

Помочь ли кто-нибудь? Спасибо вам большое заблаговременно.

С наилучшими пожеланиями,

Ленка

ответ

1

Важно понять, что вы хотите предоставить доступ авторизованным пользователям. Поэтому, когда пользователь запрашивает файл, они должны предоставить свою аутентификацию. Если вы просто загружаете файлы через анонимную ссылку (например, s3.amazonaws.com/my-bucket/file.txt), то Amazon S3 не знает, кто они, и отклонит запрос.

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

  • путем вызова GetObject команду от языка программирования, который с использованием AWS SDK. Каждый вызов будет сопровождаться учетными данными доступа, идентифицирующими пользователя.
  • С вебов-браузером через GET request который проходит строку авторизации Хешированной (known as Signature v4) для идентификации пользователя
  • через Amazon S3 Pre-Signed URL, который разрешает временного доступ к объекту в Amazon S3 с помощью строки авторизации Хешированного

Наиболее подходящим решением было бы использовать Amazon S3 Pre-Signed URL.

A Pre-Signed URL может использоваться для предоставления доступа к объектам S3 как способ «переопределения» элементов управления доступом. Доступ к обычному частному объекту можно получить через URL, добавив время истечения срока действия и подпись. Это отличный способ обслуживать частный контент, не требуя веб-сервера.

Преимущество использования предварительно подписанного URL-адреса заключается в том, что ваши пользователи не требуют учетных данных AWS. Это будет ответственности вашего приложения для надлежащей проверки подлинности пользователей, чтобы определить, разрешен ли им доступ к объектам в S3. Если им предоставлен доступ, то ваша заявка должна генерировать предварительно подписанные URL-адреса как заверенные ссылки на объекты. Эти URL-адреса действительны только для Ограниченная продолжительность времени.

Предварительно подписанный URL-адрес также может быть сгенерирован с помощью команды aws s3 presign в AWS Command-Line Interface (CLI).

Смежные вопросы