Das verstehe ich nicht ganz. Der Sinn des VPNs wäre aus meiner Sicht, dass man Credentials und/oder ein Zertifikat benötigt, um überhaupt Zugriff auf die Anwendung an sich zu erlangen.
Soweit richtig. Aber in jedem Netzwerk (auch einem VPN-Netzwerk) können infizierte Geräte rumlaufen. Du verhinderst halt, dass erstmal nicht jeder überhaupt netzwerktechnisch in die Nähe der Kiste kommt (und dann Exploits der Platformen etc. ausnutzen kann). Das brint ohne Frage schon mehr als einfach nix tun. Aber ich gehe halt immer vom schwächsten Punkt aus. Und der ist selten das, was man direkt beleuchtet (Login-Bereich einer Anwendung), sondern meiner Erfahrung und auch der oben genannten Beispiele nach meistens da, wo keiner dran denkt (Storage, infizierte Clients, ...).
Ich glaube eine perfekte Lösung gibt es - abgesehen von durchgeschnittenen Netzwerkkabeln - nicht. Letztendlich Kosten (finanziell wie zeitlich) und Nutzen abwägen.
P.S.: Ich darf/durfte schon mit Firmen zusammenarbeiten, die, sagen wir, gegen sich selbst arbeiten: Um ja nicht aus Versehen Daten auf externen Cloudservern zu hosten wird alles mit "files" in der URL oder Domain gesperrt (ja, transparenter, SSL-aufbrechender Proxy...). Lösung: Entwickler macht sein eigenes, nicht weiter gesichertes VPN, damit er auf das Packagerepository von Python kommt (https://files.pythonhosted.org/). Man kann es also auch zu gut meinen und nen Schuss nach hinten setzen.