У меня есть сайт, на котором пользователям нужно авторизоваться. Они могут загружать и удалять свои собственные изображения, НО эти изображения должны быть личными, поэтому изображения не являются общедоступными, чтобы их мог просматривать любой.
Я знаю, что мы можем использовать политики IAM для ограничения доступа к различным папкам в корзине S3 для разных пользователей IAM. Однако пользователи веб-сайта - это просто обычные зарегистрированные пользователи, записанные в базе данных (возможно, MySQL), они не являются пользователями IAM.
Какова была бы логика для настройки этого без необходимости использования пользователя IAM для каждого пользователя веб-сайта? Можете ли вы предложить какие-нибудь хорошие примеры? Или я слишком много думаю о том, что есть более простой способ установить такие ограничения?
Заранее благодарим за любые предложения.
Другой вариант - полностью отказаться от ролей и учетных данных IAM и использовать предварительно подписанные URL-адреса S3 . С помощью предварительно подписанных URL-адресов вы можете создавать безопасные, ограниченные по времени ссылки на изображения, которые позволят неаутентифицированный доступ к другим частным объектам в S3. Другими словами:
Таким образом вы можете получить без каких-либо пользователей IAM или ролей IAM для пользователей веб-сайта.
Вот простая демонстрация того, как это реализовать: S3 Pre-signed URL demo
Вы также можете использовать предварительно подписанные URL-адреса для изображение загружается , но это немного сложнее. Может быть проще загрузить изображения на ваш сервер, используя стандартные методы загрузки, и сервер загружает их в S3.
Это более ограниченный подход, чем использование Cognito, но его проще реализовать.
Надеюсь, что помогает :)
Вам, безусловно, не понадобится пользователь IAM для каждого пользователя веб-сайта, это не поддается управлению.
Рекомендуемый способ - использовать AWS Cognito для аутентификация пользователя по вашему пулу пользователей (т.е. вашему списку пользователей в вашей базе данных). Cognito выполнит вход, выход, сброс пароля и т. Д. От вашего имени, и после аутентификации пользователя ему будет выдан набор временных учетных данных AWS , которые предоставят ему доступ к определенным ресурсам, в вашем случае в определенные папки в корзине S3 .
Подробности хорошо описаны в Разрешить пользователям Cognito доступ к объектам в их корзине S3 - вероятно, это именно то, что вам нужно.
В качестве бонуса при использовании Cognito очень легко включить вход через социальные сети медиа-аккаунты - логины Facebook, Google и т. д. См. Добавление провайдеров социальной идентификации в пул пользователей .
Надеюсь, что это поможет :)