Come memorizzare in modo sicuro i segreti nel contenitore Docker?

5

L'applicazione su cui sto lavorando ha più di una dozzina di segreti, certificati SSL e chiavi API. Attualmente ho un file aggiunto in .gitignore e contiene tutti i miei segreti. Come conservare in modo sicuro tutti questi segreti? In che modo le app aziendali gestiscono questo aspetto, dove la sicurezza è la massima priorità?

Sto esaminando AWS KMS e, per quanto ho capito, devo crittografare tutti i segreti, eseguirne il commit e in fase di esecuzione passare le credenziali AWS per decrittografare i segreti (l'utente può utilizzare solo la chiave KMS per decrittografia e non sono state aggiunte altre autorizzazioni per l'utente).

Ora, supponendo che la macchina su cui vengono eseguiti i contenitori sia compromessa, i segreti sono crittografati, quindi dovrebbe andare bene, ma! se viene eseguito il comando docker inspect , visualizzerà tutte le variabili di ambiente (i segreti di AWS), quindi eseguo il comando nel contenitore e tutto quello che devo fare è usare le variabili env per decrittografare i segreti .. tipo di sconfigge lo scopo o forse mi manca un passaggio da qualche parte?

Nota : anche la mia soluzione corrente non è sicura: il file è gitignored, ma esiste ancora sulla macchina in cui vengono eseguiti i contenitori (e successivamente, dopo che l'immagine è stata creata, sono esposti come env variabili).

Nota 2 : il repository Git è privato

    
posta r00m 06.03.2017 - 22:15
fonte

2 risposte

2

In generale, devi assumere una sicurezza più stretta per l'istanza in cui è in esecuzione il contenitore rispetto al contenitore stesso perché, come fai notare, un compromesso riguarda tutto il downstream. Questo è lo stesso con l'host di macchine virtuali che esegue l'istanza di ec2.

Una soluzione standard è quella di passare segreti nel contenitore tramite la variabile di ambiente. Ho anche visto soluzioni (per i segreti archiviati in Hashicorp Vault) che creano un file system di fusibili montato nel contenitore o un approccio simile che utilizza un driver di volume Docker. Questo non è così semplice, ma potrebbe essere più semplice se passi molti segreti.

    
risposta data 06.03.2017 - 22:40
fonte
3

Docker Secrets è il nuovo metodo consigliato per condividere & memorizzare i segreti all'interno dei contenitori. La finestra mobile ha deliberatamente scelto di archiviare i segreti nei file con /run/secrets rispetto all'approccio della variabile di ambiente.

    
risposta data 18.06.2017 - 16:05
fonte

Leggi altre domande sui tag