Django и загрузка медиафайлов на AWS S3 для просмотра пользователями приложения

Возможно, это неясный вопрос, но я разрабатываю приложение, в котором пользователи могут загружать файлы (в основном видео и изображения). Пользователи могут создавать группы и загружать свои изображения в группу, а все члены группы могут просматривать эти файлы. У меня настроен и работает AWS S3, однако Aws рекомендует держать ведро Private.

если ведро приватное, единственный способ разрешить доступ пользователям для просмотра содержимого (возможно, загруженного друзьями по предварительно подписанным ссылкам?)

нужно ли вообще делать bucket приватным. Я вижу учебники, и они обычно устанавливают настройки bucket на public. Это означает, что любой человек, у которого есть доступ к url, может получить доступ к изображению. Допустим, пользователь 1 загружает в группу xyz. Только члены xyz должны иметь доступ к этому изображению.

Внедрение уникальных идентификаторов для изображений усложнит доступ к ним, но не сделает его невозможным. будет ли это лучшим подходом или django будет генерировать подписанные URLS каждый раз, когда пользователь хочет просмотреть определенное изображение? Мне кажется, что это излишество для приложения для обмена фотографиями.

  1. are there any other ways to add security?

Не обязательно ведра должны быть публичными. Вы можете получить доступ к приватным файлам с помощью url и сохранить их конфиденциальность. Вы можете посмотреть на signature 4 security of s3. Вы можете сгенерировать url для файлов с параметрами, содержащими ключи доступа со сроком действия (ключ каждый раз разный). Только при наличии ключей доступа с url приватные файлы будут доступны. Если ACL по умолчанию приватный, DRF автоматически добавляет ключи в url.

Вернуться на верх