Come garantire una comunicazione sicura e l'autenticazione tra processi in un'applicazione multiserver

2

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.

    
posta Marjan Venema 06.11.2013 - 10:19
fonte

1 risposta

1

Un approccio pratico e sicuro consiste nell'utilizzare SSL con i certificati client, che è probabilmente simile al tuo approccio esistente.

Un modo per farlo è che ogni server ha una chiave privata e un certificato autofirmato, e anche il certificato di ogni server con cui ha bisogno di parlare. Pertanto, quando un server delle applicazioni si connette a un server di dati, entrambi i terminali presentano il loro certificato, che l'altro conclude con la loro copia.

Questo è buono per una manciata di server. Se si dispone di più di questo è necessario creare la propria autorità di certificazione interna. Ogni server ha quindi una chiave privata, un certificato firmato dalla CA interna e il certificato per la CA interna stessa.

In questo modello, l'autenticazione tra i server ha un carico moderato del server, ma si attenua mantenendo le connessioni SSL aperte per un lungo periodo di tempo, quindi l'autenticazione viene eseguita solo occasionalmente.

    
risposta data 22.02.2014 - 14:31
fonte

Leggi altre domande sui tag