Protezione dell'architettura dei servizi Micro internamente

4

Sto implementando una soluzione con set di Micro Services (Spring Rest Services) con Rabbit MQ come broker di messaggi. Il server Edge viene autenticato utilizzando il server Identity basato su OAuth. Le chiamate interne di Micro Sevices non sono autorizzate o autenticate.

Il mio obiettivo è proteggere tutti i Micro Services interni con Autenticazione e Autorizzazione. Necessità di proteggere la comunicazione interna dall'attacco MiTM o l'intercettazione.

Una cosa che possiamo fare è inoltrare il token di autenticazione del server periferico in Micro Services interni. Ma se qualcuno cattura il token Auth, può eseguire un attacco Vice confuso (agire come Micro Service legittimo). E chiunque può intercettare o intercettare la comunicazione tra Micro Services.

Per favore fammi sapere se conosci una soluzione migliore per questo.

Grazie in anticipo.

    
posta user3496510 22.12.2016 - 23:03
fonte

2 risposte

2

Riutilizzare il token di bordo è una pessima idea in quanto offre semplicemente maggiori opportunità di essere intercettato e utilizzato in modo errato.

Devi identificare prima eventuali limiti di rischio. Quindi quali servizi / dati richiedono effettivamente una protezione aggiuntiva o separata. Quindi puoi creare dei limiti di sicurezza che corrispondono. In generale, non dovresti cercare di proteggere autonomamente tutti i servizi interni in quanto è difficile, e costoso, scalare. Non fornirebbe comunque molta sicurezza in più. Classificare i sistemi e i dati è un dolore noioso, ma è la cosa più importante che puoi fare.

Ogni confine può quindi essere protetto con qualunque metodo sia il migliore. Alcuni potrebbero dover essere limitati solo da quali indirizzi sono autorizzati (firewall), altri potrebbero richiedere token aggiuntivi o sicurezza basata su certificati.

In un ambiente che ha bisogno di sicurezza, i server periferici sono generalmente considerati non attendibili (semi-attendibili al massimo) in ogni caso poiché questi saranno i più esposti.

    
risposta data 23.12.2016 - 10:16
fonte
1

Sono d'accordo con la risposta di Julian secondo cui devi prima capire i rischi e classificare i dati nel tuo sistema.

Sono rispettosamente in disaccordo sull'uso di un token di bordo è una cattiva idea in tutte le circostanze. Se il token specifica solo l'identità (chi è il chiamante) e lascia l'autorizzazione (ciò che il chiamante può e non può fare) fino a ciascun servizio, garantisce verificabile che gli utenti possono o meno eseguire determinate attività. Ad esempio, se il token di bordo contiene un elenco di ruoli, solitamente come attestazioni, ciascun microservizio potrebbe consentire o impedire l'accesso in base ai ruoli.

Come dice Julian, questo presuppone che l'utente marginale sia significativo. Il server di origine (l'entità del servizio anziché l'utente principale) potrebbe essere più importante o potrebbero esserci attestazioni (ad esempio, regione o server in cui i dati sono archiviati), che richiedono un diverso token.

Sono anche d'accordo che non è importante autenticare tutti i microservizi. Tuttavia, vorrei iniziare con il presupposto che si sta autenticando, quindi rimuovere il requisito solo se non è necessario. È molto più semplice rimuovere l'autenticazione piuttosto che aggiungerla in seguito.

    
risposta data 23.12.2016 - 12:57
fonte

Leggi altre domande sui tag