Considerazioni sulle prestazioni con controllo degli accessi in un'architettura di sistema distribuita

4

Al momento stiamo lavorando per aggiornare un piccolo sistema informativo per un'azienda. Attualmente, il sistema ha una zona di rete aziendale (CORP) in cui sono collocati i servizi per gli utenti interni e un segmento di rete del data center (DC) in cui risiedono un servizio di accesso ai dati e tutti i database. Tutte le applicazioni sono essenzialmente distribuite nei server Web e le comunicazioni tra di loro avvengono tramite HTTPS.

Abbiamo bisogno di installare una nuova zona di rete, la DMZ, dove verranno posizionati alcuni servizi disponibili esternamente. Durante i nostri incontri, abbiamo riscontrato un problema che potrebbe essere importante.

Le richieste di dati in arrivo da Internet arrivano al servizio Accesso ai dati DMZ . DMZ Data Access inoltra la richiesta a CORP External Request Handler (che è essenzialmente un proxy che autentica la richiesta proviene da DMZ Service 1) che inoltra la richiesta a DC Data Access servizio.

Il problema si presenta quando aggiungi controlli di controllo dell'accesso. A causa del modo in cui è stato configurato il sistema precedente, gli utenti, i ruoli e le autorizzazioni possono essere recuperati solo tramite il servizio di accesso ai dati DC. Ciò significa che se costruiamo intercettori che controllano le autorizzazioni dell'utente in DMZ Data Access, il flusso di dati includerà:

Utente - > Accesso ai dati DMZ (controllo dei permessi) - > Gestore di richieste esterne CORP - > DC Data Access (permesso ok) - > Gestore di richieste esterne CORP - > Accesso dati DMZ (autorizzazione concessa, dati richiesta) - > Gestore di richieste esterne CORP - > Accesso ai dati DC - > Gestore di richieste esterne CORP - > Accesso ai dati DMZ - > Utente

Potremmo essere in grado di spostare i controlli di controllo dell'accesso sul livello di accesso ai dati DC per semplificare un po 'il flusso, ma non siamo ancora sicuri di quale impatto avranno sulle prestazioni, né di quanto sia sensibile questo è un attacco DDoS.

Tuttavia, non siamo sicuri se questo è l'approccio corretto. Esiste un modo standard per affrontare questo problema, dovremmo unire il controllo degli accessi e i controlli sull'accesso ai dati in una singola richiesta oppure stiamo semplicemente facendo un'ottimizzazione prematura?

Una cosa da notare è che non possiamo fare affidamento sulla directory attiva o su qualche altro fornitore di autorizzazioni, poiché è necessario integrarlo nell'infrastruttura esistente.

    
posta user2352164 03.12.2017 - 08:52
fonte

2 risposte

1

Se perdi i dati attraverso la DMZ prima dell'autorizzazione, potresti non avere una vera DMZ, potresti avere solo un router chiamato DMZ. Dipende dai dettagli.

Generalmente, si tratta di un problema separato se l'autorizzazione è necessaria e quando, rispetto a come instradarlo. Non spostare i controlli di sicurezza in giro per motivi di prestazioni. Non è un'ottimizzazione prematura, è un problema peggiore; teatro della sicurezza. Decidi quali sono i controlli di accesso necessari in base alle esigenze di accesso e sicurezza. Quindi costruisci la rete attorno a queste esigenze. La rete in sé è economica rispetto all'elaborazione, quindi le prestazioni non dovrebbero essere significativamente influenzate in alcun modo nella maggior parte dei casi.

    
risposta data 02.01.2019 - 23:29
fonte
0

Uno dei modi tipici con cui ti occupi di questo è il concetto di token / ticket. In sostanza si ottengono i dettagli di quali accessi l'utente ha dall'autorità e si firma / criptalo in un token che viene poi passato in giro con la richiesta. Ogni componente della soluzione può quindi ispezionare il token e determinare se l'accesso concesso consente di eseguire l'azione senza dover tornare all'autorità.

La sfida principale in questo approccio (oltre a farlo bene) è determinare per quanto tempo questi token fanno bene. Se un cliente ha autorizzazioni o accessi rimossi ma ha ancora un token o un ticket valido, può comunque accedere a cose per le quali non sono più autorizzati.

Non vuoi davvero farlo tu stesso. Dovresti esaminare i pacchetti esistenti che forniscono le funzionalità di crittografia necessarie e avvolgere l'infrastruttura esistente con loro.

    
risposta data 02.01.2019 - 23:47
fonte