1. open source решение
Ну так напиши backend, реализуй доступ к S3 и открой код. В чем проблема?
Генерация ссылки с доступом:
S3 presigned URL
Права доступа управляются самим приложением. В интернете есть куча статей как это делать.
Для генерации одноразовой ссылки
Хранилище может быть видно всем, а доступ к файлам - только для кого сгенерирована ссылка.
Допустим, нужно раздать 1 файл 10 людям. У 10 человек будет 10 разных ссылок, ссылающихся на один и тот же файл в хранилище S3.
Если не хотите дорогой AWS S3, то возьмите совместимое решение MinIO, которое можно установить на своих мощностях и управлять самому.