Nota : domanda aggiornata per restringere leggermente l'ambito.
Scenario
Client < - > Server delle applicazioni < - > Server dati
- Gli utenti utilizzano il client per connettersi al server delle applicazioni e creare query per l'esecuzione.
- Il server applicazioni gestisce l'autenticazione e l'autorizzazione.
- Il server applicazioni invia le definizioni di query ( non SQL) insieme alle informazioni di autorizzazione al server di dati.
- Il server dati fa quello che viene detto.
Le autorizzazioni autorizzano le tabelle e le colonne delle tabelle a cui un utente è autorizzato o non è autorizzato a vedere. E può anche specificare valori di colonna che un utente è autorizzato o non autorizzato a vedere. Ad esempio, un utente può essere limitato a vedere solo l'ordine dal client X. Un altro utente può essere autorizzato a visualizzare i dati dei dipendenti per sé e per i suoi membri del team tranne informazioni salariali (colonne).
Questa è una suite software che verrà installata sulle macchine del cliente . L'installazione può essere composta da più server applicazioni e più server di dati.
Requisiti
Poiché il server di dati non esegue alcuna autenticazione o autorizzazione per gli utenti effettivi, dobbiamo assicurarci che:
- le richieste di esecuzione delle query provengono solo dai nostri server delle applicazioni
- ottenere le richieste di dati sui risultati sono accettate solo dallo stesso server delle applicazioni che ha inviato la richiesta di esecuzione della query
- i metodi di autenticazione e crittografia hanno il minor overhead possibile (le connessioni possono essere stabilite su base per richiesta e ogni richiesta di esecuzione di query può essere seguita da molte richieste di dati sui risultati)
- il server delle applicazioni e il server dati potrebbero essere in esecuzione su macchine fisicamente diverse
Domanda
Quale sarebbe il modo migliore per impostare la comunicazione tra il server delle applicazioni e il server di dati per garantire che i requisiti siano soddisfatti?
Attualmente utilizziamo HTTPS, ma siamo aperti ad altri metodi di comunicazione se questi renderebbero l'autenticazione e la sicurezza della comunicazione tra applicazione e server dati più semplice / migliore / più veloce.
Aggiornamento:
Vorremmo stare alla larga da tutto ciò che un reparto IT attento alla sicurezza potrebbe disapprovare (fidandosi di un'altra CA) o renderebbe l'installazione molto più difficile / più dolorosa (certificati client). Ma l'autenticazione dei processi e la sicurezza dei dati che fluiscono tra di loro è essenziale, quindi se sono l'unico modo, avremo solo ingoiare la pillola.