Как программно контролировать доступ пользователя cogonito к объекту S3 - PullRequest
0 голосов
/ 02 февраля 2020

Фон

Я использую S3 для хранения платного контента. Мое приложение также использует Cognito для аутентификации пользователей, а также отслеживает, кто какой контент приобрел. Но как я могу сделать объект S3 доступным только для платных пользователей?

Например: объект в "mybucket / private-content / obj1.pdf" должен быть доступен для пользователя A, но не для пользователя B в зависимости от записи о покупке.

Пока что я могу придумать два решения, но ни одно из них не является идеальным.

Решение 1

Сделать ведро частный. Затем создайте подписанный URL-адрес для объекта после того, как пользователь приобрел контент. Проблема : Пользователь A может приобрести контент и поделиться подписанным URL-адресом для пользователя B. Пользователь B может получить доступ к объекту без оплаты.

Решение 2 Каждый раз, когда пользователь приобрел некоторый контент, скопировал объект в пользовательскую папку на S3. И используйте политику корзины, чтобы ограничить доступ пользователя только к своей собственной папке. Проблема : необходимо дублировать содержимое снова и снова. Это увеличивает мою стоимость хранения.

1 Ответ

0 голосов
/ 15 февраля 2020

Нашли достаточно хорошее решение, используя подписанный URL-адрес CloudFront вместе с пользовательской политикой. В пользовательской политике вы можете указать диапазон / адрес IP, который может обращаться к защищенному контенту. Это означает, что если пользователь поделится ссылкой с другим пользователем, скорее всего, ссылка не будет работать для другого пользователя.

См. Здесь

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