Назад | Перейти на главную страницу

Ограничить доступ к папкам корзины S3 определенным пользователям веб-сайта? (без использования пользователей IAM)

У меня есть веб-сайт, на котором пользователям необходимо войти в систему. Они могут загружать и удалять свои собственные изображения, НО эти изображения должны быть частными, поэтому изображения не являются общедоступными, чтобы их мог просматривать любой.

Я знаю, что мы можем использовать политики IAM, чтобы ограничить доступ к различным папкам в корзине S3 для разных пользователей IAM. Однако пользователи веб-сайта - это просто обычные зарегистрированные пользователи, записанные в базе данных (вероятно, MySQL), они не являются пользователями IAM.

Какова была бы логика для настройки этого без необходимости использования пользователя IAM для каждого пользователя веб-сайта? Можете ли вы предложить какие-нибудь хорошие примеры? Или я слишком много думаю о том, что есть более простой способ установить такие ограничения?

Спасибо заранее за любые предложения.

Вам точно не понадобится Пользователь IAM для каждого пользователя веб-сайта это невозможно.

Рекомендуемый способ - использовать AWS Cognito для аутентификации пользователя против вашего Пул пользователей (т.е. ваш список пользователей в вашей базе данных). Cognito выполнит вход, выход, сброс пароля и т. Д. От вашего имени, и после аутентификации пользователя ему будет выдан набор временные учетные данные AWS что даст ему доступ к определенным ресурсам, в вашем случае к определенные папки в корзине S3.

Детали хорошо описаны в Разрешить пользователям Cognito доступ к объектам в их корзине S3 - наверное, это именно то, что вам нужно.

В качестве бонуса при использовании Cognito очень легко включить вход в учетные записи социальных сетей - Facebook, Google и т. Д. Видеть Добавление поставщиков социальной идентификации в пул пользователей.

Надеюсь, это поможет :)

Другой вариант - вообще обойтись без ролей и учетных данных IAM и использовать Предварительно подписанные URL-адреса S3. С помощью предварительно подписанных URL-адресов вы можете создавать безопасные, ограниченные по времени ссылки на изображения, которые позволят неаутентифицированный доступ к другим частным объектам в S3. Другими словами:

  • Все ваши объекты S3 являются частными, никто, кроме веб-сервера, не имеет к ним доступа.
  • Когда пользователь входит в систему, вы создаете предварительно подписанные URL-адреса для его изображений. Эти URL-адреса предоставят пользователю временный доступ к его контенту (например, со сроком действия 1 час).
  • Когда срок действия ссылки истекает (например, через 1 час), она больше не предоставляет доступ к изображению пользователя.

Таким образом, вы можете обойтись без каких-либо пользователей IAM или ролей IAM для пользователей веб-сайта.

Вот простая демонстрация того, как это реализовать: Демонстрация предварительно подписанного URL-адреса S3

Вы также можете использовать предварительно подписанные URL-адреса для загрузка изображений, но это немного сложнее. Возможно, будет проще загрузить изображения на ваш сервер, используя стандартные методы загрузки, и сервер загружает их в S3.

Это более ограниченный подход, чем использование Cognito, но его проще реализовать.

Надеюсь, это поможет :)