ENV esporta nella finestra mobile entry_point.sh eseguita da CI

1

Supponendo di avere la seguente riga nelle impostazioni di Django:

OKPAY_API_KEY = os.environ.get('Ok_PAY_API_KEY')

Quindi importalo nel mio processo di compilazione in wercker CI

E poi scrivi questa var alla entrypoint.sh del mio contenitore nel build step di wercker . il seguente modo:

export OKPAY_API_KEY=${OKPAY_API_KEY}

La mia domanda è: cosa succede se qualcuno ottiene l'accesso a quel contenitore di docker come o al file entrypoint.sh (diciamo che il repository della docker è compromesso o che l'hacker accede al contenitore in esecuzione).

C'è una pratica migliore? o almeno un modo per incapsulare ulteriormente questi dati?

P.S. Il progetto in questione è uno scambio BTC e Altcoin, quindi la sicurezza dei fondi dei miei utenti è la massima priorità per me.

    
posta Oleg Belousov 18.01.2017 - 15:52
fonte

2 risposte

1

Se il contenitore è compromesso, il gioco finisce per te, penso ... comunque potrebbe essere una buona pratica per cercare di mettere quanti più ostacoli possibili. La difesa in profondità ti fa sentire bene.

Forse invece di avere le chiavi in "plain" in Dockerfiles puoi provare ad averle memorizzate in una sorta di meccanismo di sicurezza. Non lo so, forse un database sicuro o qualcosa del genere. Forse con qualche tipo di script puoi collegarti a quel database e provare a recuperare OKPAY_API_KEY ma avrai un problema simile con la chiave per connettersi a quel database. Dove conservarlo? Come conservarlo? È una storia infinita. Alla fine, ci sarà sempre un posto sensibile in cui qualcosa (una chiave, un token, una password o qualsiasi altra cosa) potrebbe essere compromesso e dopo di ciò, tutto è un "castello di carte".

Solo tu conosci la tua struttura, quindi prepara un piano. Prenditi cura di esso attentamente, prova a definire i punti sensibili. Prova a creare diversi livelli e, naturalmente, se possibile, assumi i servizi di un pentestore di fiducia o di una compagnia pentest per provare a hackerare la tua struttura. Sembra importante nel tuo caso.

    
risposta data 02.03.2017 - 22:04
fonte
2

A partire da Docker 1.13, Docker fornisce un sistema di gestione dei segreti che può essere utilizzato per archiviare in modo sicuro dati come le credenziali e le chiavi API. C'è un blog su di esso qui

Ciò che può fare è archiviare la chiave in un modulo crittografato su disco e quindi fornirla al contenitore in fase di runtime. Se qualcuno accede al contenitore funzionante, sarà comunque nei guai poiché ovviamente la chiave è necessaria per il processo, quindi non c'è un modo reale per evitarlo (sebbene tu possa fare qualcosa di simile, dividi la sezione del tuo applicazione che si occupa dell'API nel proprio contenitore e tenta di ridurre la superficie di attacco).

La gestione dei segreti Docker è principalmente intesa (almeno per ora) per gestire le configurazioni degli sciami Docker, quindi se stai cercando qualcosa di più generalizzato in termini di gestione dei segreti dei contenitori, ti suggerisco qualcosa come HashiCorp Vault

    
risposta data 04.03.2017 - 10:23
fonte

Leggi altre domande sui tag