I'm transitioning a web app (runs on LAMP) from a single host to a configuration with the php/apache app running on a public facing server in a DMZ. The app connects to mysql which is sitting in a private network behind the DMZ. My main criteria I have been given is to keep all user data (in the database or user uploaded files) out of the DMZ entirely and only allow access to it via an ACL. I.e. segregating the application layer from the data layer, both by network and by authentication/access.
I've got this segregation nicely with mysql, but I'm not coming up with any good ideas for how to access file storage on the file server from the web server. I've got it running currently on an NFS export mounted on the web server, but that leaves the file server and all its data open to anyone with access to the web server (basically) without authentication.
I realize that any serious solution is probably going to involve significant development time, and I'm prepared to do that. Also prepared to spend some money on an off-the-shelf solution if needed to get the job done right. I feel like I'm missing something blindingly obvious here.