Você pode usar um serviço de armazenamento em nuvem que tenha uma API que permita gerar URLs autenticados, como o Amazon S3.
Para fazer isso, configure seu bucket do S3 como privado por padrão, e seu aplicativo da Web usa a API do S3 para distribuir os usuários de URLs autenticados que têm permissão para acessar determinados arquivos. Assim como os links de redefinição de senha, esses links seriam de uso único ou poderiam expirar após um determinado período.
Mais informações: Usando um CDN como Amazon S3 para controlar o acesso à mídia