Как добавить непубличные файлы сайта на S3 на основе пользователей сайта? - PullRequest
0 голосов
/ 09 мая 2018

На нашем сайте мы хотим добавить возможность загрузки личных файлов. Эти файлы не должны быть общедоступными и могут быть доступны другим пользователям на веб-сайте. Однажды я построил аналогичную функциональность для другого проекта, в котором я хранил файлы в экземпляре MongDB на сервере. Это позволило нам построить детализированные правила доступности для каждого файла. Однако для этого проекта мы хотим хранить файлы на Amazon S3. И теперь мне интересно, как я мог бы создать аналогичные правила доступности, используя S3.

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

Есть ли способ, которым я могу требовать определенный секрет для файла на S3, возможно, в URL? Или есть другие стандартные способы достижения этого?

Все советы приветствуются!

1 Ответ

0 голосов
/ 10 мая 2018

Если вы довольны S3 для своего хранилища контента, вы можете обратиться к AWS CloudFront CDN и API для обеспечения контроля доступа. Cloud Front с радостью использует корзину S3 в качестве частного источника и предлагает подписанные URL-адреса для предоставления временного доступа.

Вы можете программно сгенерировать URL-адрес облачного фронта из своего кода, указывающего на ресурс в s3, и он будет обеспечивать соблюдение политики, которую вы предоставляете. URL-адрес обеспечивает временный доступ на основе различных критериев, таких как IpAddress и DateLessThan. Они могут использоваться для динамического создания URL-адреса, ограниченного определенным IP-адресом (то есть IP-адресом текущего пользователя), и действительны только до определенной даты / времени.

Взято из документов AWS: Typical s3 backed Cloudfront distribution

A signed URL includes additional information, for example, an expiration date and time, that gives you more control over access to your content. This additional information appears in a policy statement, which is based on either a canned policy or a custom policy.

См. Документы AWS: https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/PrivateContent.html

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