If it would be possible to implement this by inventing a custom URI scheme for your storage system and implementing a subclass of ResourcePath, that would probably be the best approach. It’s not obvious whether that would work here or not, and it would probably require a patch to the base class to make it aware of your scheme (@timj, maybe we should think about an entry-points hook for this?). But it’s what we’ve done to abstract over file storage backends in all other cases, and there are quite a few other implementations you could use as an example.
How do people access any file from minoc? If it’s a simple URL then you can populate the butler file datastore with either a relative path to a root URL or the full URL that you need to use. The question then becomes how you handle auth to restrict access to the file to the data rights community.
You are braver than us using direct butler with a readonly postgres user. We are using a client/server intermediary that uses a web service to talk to butler. This allows things like rate limiting and URL signing.