я помню когда в вк можно было перебором выкачать закрытые альбомы, я такое реализовывал так: отдавал файлы через django, и там проверял права доступа, проект не большой, который работал во внутренней сети предприятия, они бы на S3 не пошли, покрайней мере тогда
это примитивный конфиг, построенный на хитрых урлах которые "трудно угадать" (про вк), нормальный конфиг жестко регулирует права доступа.
проксировать через джангу можно, но это грубое решение которое перегружает бекенд, s3 можно/нужно применять в том числе для гибридных/закрытых сетей, например как дублирующий внешний бекап