In realtà è tipico avere un database dietro un firewall interno a cui possono accedere solo le applicazioni semi-attendibili e le reti interne specifiche.
Non impedisce una violazione, ma penso di capire cosa vorresti ottenere, e questa è la restrizione di accesso da cosa sta accedendo al database.
Se hai archiviato le tue password nel loro schema (password passate invece di dbo.passwords), puoi limitare l'accesso allo schema del pass a qualsiasi cosa desideri.
Tecnicamente le applicazioni non hanno necessariamente bisogno di accedere alle tabelle in cui sono archiviate le password, ma hanno bisogno dei sali, che non sono comunque un segreto. In modo che tu possa memorizzare i sali nella tabella dbo.user, ma la password effettiva nella tabella pass.passwords.
Potresti dare alle tue applicazioni l'accesso ai proc memorizzati, uno dei quali potrebbe essere dbo.Authenticate(userId, hash)
, e limitare l'accesso allo schema del pass a una rete interna offline e limitato a utenti specifici.
E non credo che la restrizione dell'accesso sia considerata offuscata.