Допустим, у меня есть вариант использования, когда пользователи могут покупать mp3-файлы внутри приложения. Объекты хранятся в облачном хранилище GCP. Как лучше всего доставлять эти объекты только тем пользователям, которые приобрели файлы?
Изучив тему, я пришел к трем решениям:
- Клиент вызывает службу REST (например, службу, работающую внутри App Engine). Эта служба загружает файлы из облачного хранилища, а затем отправляет их обратно клиенту.
- Вместо того, чтобы отправлять файлы через вызов REST, я мог бы отправить URL-адрес загрузки (из облачного хранилища) клиенту. Это было бы более экономично, однако для меня это звучит как проблема безопасности, поскольку любой, кто просто отслеживает свою сеть, может перехватить URL-адрес.
- Создание (ограниченного по времени) подписанного URL-адреса, чтобы пользователь мог загрузить
Очевидно, что сначала должна произойти проверка разрешения, например. база данных, содержащая информацию о том, купил ли пользователь X mp3 Y.
Эта проблема также может быть применена к хранилищу BLOB-объектов Azure или AWS S3...