I microservizi dietro un gateway API devono verificare il token di accesso?


10

Ho un sacco di microservizi accessibili solo esternamente tramite un gateway API.

My API Gateway è impostato come risorsa OAuth e convalida il token (verifica firma ecc.) Prima di passare la richiesta a valle a uno o più microservizi.

Mentre i miei microservizi hanno bisogno del token per verificare ambiti e attestazioni, ora c'è bisogno che questo servizio convalidi anche il token?

Sembra un po 'eccessivo, ma non riesco a trovare alcun consiglio online su questo scenario.

La validazione del token sul gateway API è abbastanza buona? Oppure è consigliabile convalidarlo di nuovo più tardi?


1
Questi stessi servizi sono accessibili quando si ignora il gateway internamente ?
Greg Burghardt,

I cannot find any advice online about this scenario.Perché dipende da diversi fattori che variano da progetto a progetto. Probabilmente nella maggior parte degli sviluppi là fuori che affermano di essere architettura MS, non ne hanno bisogno. Inoltre, all'interno di tali architetture, dovrebbe esserci un server di autenticazione che lo farà al posto dei servizi (e invece del gateway ovviamente). È il server di autorizzazione che consente o meno il passaggio della richiesta.
Laiv

Risposte:


3

Se eventuali chiamate interne possono bypassare il gateway, convalidare il token in ogni microservizio o forzare tutte le chiamate, interne ed esterne, a passare attraverso il gateway.

Personalmente non mi fiderei nemmeno delle chiamate interne. Falli passare attraverso il gateway, fino al punto di limitare il traffico tramite le regole del firewall. Sapere chi sta parlando con chi e perché. Questo aiuta a limitare la tua superficie di attacco se qualcuno viola la tua rete.

Ciò introduce un singolo punto di errore, ma questo rischio può essere mitigato dal bilanciamento del carico dei server e dalla disponibilità di server di failover in caso di problemi catastrofici.

D'altra parte, se ogni servizio convalida il token e qualsiasi modifica al processo di convalida cambia, è necessario aggiornare i servizi N + 1.


Ho sentito l'argomento secondo cui "non puoi fidarti nemmeno del traffico interno". Ma esporre un'applicazione a un numero (relativamente) piccolo di utenti su una rete Intranet è molto lontano dall'esporre la stessa applicazione a Internet pubblica. È essenzialmente la stessa differenza tra un magnete dell'altoparlante e un ciclotrone.
Robert Harvey,

2
@RobertHarvey: Penso che la giustificazione che ho sentito per "non fidarti del traffico interno" non sia tanto il traffico legittimo quanto il muro che si stacca dalla rete in caso di intrusioni. Soprattutto se il tuo sistema gestisce informazioni personali, informazioni sanitarie, finanziarie o sensibili. Se qualcuno si intromette sono limitati in cos'altro possono parlare.
Greg Burghardt,

Se qualcuno entra nel tuo sistema, la convalida del token sarebbe il minore dei tuoi problemi. La convalida o meno del token all'interno di una rete attendibile (e non accessibile da parte di stranieri) potrebbe dipendere dal tipo di convalide che eseguiamo e se ce ne sono altre che non eseguono nuovamente la convalida. Ad esempio, le prestazioni. Torna al tuo ragionamento. Implementeresti TLS in una rete privata? Crittograferesti la comunicazione tra due componenti in esecuzione uno accanto all'altro? La risposta probabile è dipende .
Laiv
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.