1) Можно использовать БД для всего. Там и файл, и ссылка на него.
+ все в одном месте.
+ легко бекапить.
+ транзация на всю операцию целиком.
- база будет очень большой.
2) Можно использовать БД только для хранения ссылок на файл.
+ БД маленькая.
+ хранилище отдельно.
- бекап БД и хранилища файлов осуществляется раздельно.
- нет транзакций, файл может быть записан, а ссылки не будет, и на оборот.
БД - SQL или NoSQL.
Т.к. связей нет, то лучше NoSQL.
Безопасность - Авторизация, токены или куки. Ничего другого.
Тут либо сервис во внутренней сети, и ничего не нужно. Или сервис доступен снаружи, и нужна авторизация.
Можно погуглить как работает Azure Blob storage, идеи взять от туда.
Проблема с размером решается, больше гуглить.