Quanto è sicuro il traffico da contenitore a container della finestra mobile?

11

Sto lavorando alla creazione di un'applicazione Web utilizzando il modello di architettura microservice in un set di contenitori docker e mi chiedo dell'importanza di proteggere la comunicazione tra l'applicazione e i microservizi.

L'applicazione e i microservizi saranno collegati insieme in un cluster utilizzando l'opzione --link e i microservizi non espongono alcuna porta. La comunicazione tra l'applicazione e i microservizi avverrà tramite HTTP. L'applicazione esporrà solo la porta 80.

Ho pensato a cosa potrebbe accadere se l'applicazione è compromessa - mi sembra che se ciò accade, i dettagli di tutte le chiamate fatte alle API di microservizio saranno nelle mani dell'attaccante (incluse le chiavi segrete, se implementato - vedere lo schema discusso di seguito), in modo che possano accedere a tutti i dati che possono essere ottenuti tramite tali chiamate API, ma non avranno accesso al database o alle altre risorse utilizzate esclusivamente dai microservizi. Ma questo è vero indipendentemente dal fatto che le chiamate API siano autenticate con il metodo sopra o no.

Quanto è sicuro questo? Devo aggiungere un ulteriore livello di autenticazione alle chiamate API?

Sto prendendo in considerazione questo schema per l'autenticazione: progettando un'API REST (Web) sicura senza OAuth

Fondamentalmente, l'idea è che l'applicazione e il servizio abbiano un segreto condiviso che viene utilizzato per crittografare il contenuto del messaggio al fine di determinare se il messaggio proviene da una fonte autorizzata e se è stato manomesso. Al momento, le API saranno disponibili solo per l'applicazione, anche se a un certo punto in futuro potrebbe essere utile rendere disponibili alcune API di microservizio ad altre applicazioni, potenzialmente non in esecuzione nei contenitori docker, e so che un solido schema di autenticazione essere richiesto a quel punto - lo schema discusso sopra è adeguato?

    
posta Kryten 05.01.2015 - 16:43
fonte

1 risposta

6

Dalla documentazione della finestra mobile su link al contenitore , è possibile vedere che l'impostazione standard per i collegamenti è creare un rete interna sull'host di docker utilizzata dai contenitori per comunicare tra loro.

Questa rete non è esposta fuori dall'host per impostazione predefinita, quindi da quella prospettiva dovrebbe essere protetta dagli aggressori di rete (ad esempio, nessuna porta o servizio sono accessibili dalla rete, quindi niente da attaccare).

Se un utente malintenzionato accede all'host di docker, è probabile che la sicurezza dei contenitori sia comunque nei guai con o senza collegamento, a seconda del livello di privilegi che l'utente malintenzionato può ottenere, come con l'accesso a un account privilegiato sull'host di docker tutte le scommesse sono spente.

L'altro scenario di probabile attacco è il punto in cui l'autore dell'attacco accede alla parte rivolta verso l'esterno della tua applicazione containerizzata. Anche in questo caso non vi è molto altro svantaggio nell'usare i collegamenti senza ulteriore sicurezza poiché una volta che hanno accesso al server delle applicazioni front-end, è probabile che ottengano le credenziali necessarie per accedere ai servizi di back-end in quanto saranno presenti su il server front-end.

Una nota di cautela sarebbe che se progettate affidandovi alla sicurezza del collegamento di container, potreste incorrere in problemi se successivamente aumentate la soluzione per dividere i componenti dell'applicazione su macchine virtuali diverse o, in effetti, host fisici diversi, come fareste allora potenzialmente esponendo questi servizi a reti non fidate.

In sintesi, direi che il collegamento di container dovrebbe essere considerato un mezzo relativamente sicuro di comunicazione tra container.

    
risposta data 17.08.2015 - 09:30
fonte

Leggi altre domande sui tag