Il modo migliore per archiviare / recuperare file di chiavi sensibili?

5

Abbiamo i nostri server web in esecuzione in AWS EC2. Abbiamo circa 30 API Keys / password / etc (dati sensibili) che sono impostati nell'ambiente per l'utilizzo della nostra app. Ogni volta che distribuiamo, iniziamo una nuova istanza del server, abbassiamo il nostro repository e costruiamo la nostra applicazione. Ho bisogno di un modo per portare le chiavi sul server da inserire nell'ambiente per l'applicazione. Dal momento che stiamo distribuendo più volte alla settimana, questo non può essere un processo manuale. Inoltre non voglio mettere le chiavi nel nostro repository. Anche se abbiamo crittografato un file con tutte le nostre chiavi, avremo comunque bisogno di una chiave per decifrarlo dall'altra parte. Ho una soluzione in atto, ma ogni volta che abbiamo bisogno di aggiungere / modificare le chiavi non è molto semplice.

Qualcuno può pensare a un buon modo per far entrare queste chiavi nell'ambiente? Grazie!

    
posta trikosuave 30.10.2014 - 18:48
fonte

4 risposte

1

So di essere in ritardo su questo, ma potrebbe essere di beneficio a qualcun altro che sta affrontando questo problema ora.

Potresti fare quanto segue: - Inserisci una chiave master nel database - Controllare la chiave effettiva nel codice repo, ma crittografata dalla chiave master. Questa chiave archiviata potrebbe essere in un file protetto da password.

Alcuni mesi fa AWS ha creato un nuovo servizio chiamato KMS (servizio di gestione delle chiavi). Si occupano di gestire la chiave effettiva e la sua chiave principale in modo sicuro e conforme.

    
risposta data 05.07.2015 - 00:42
fonte
0

Se ho capito tutto, penso che tu abbia due scenari (o più!)

Scenario 1

È possibile creare uno script che controlli continuamente le nuove chiavi (crittografate). Ogni volta che ne individua uno nuovo (rilevato tramite hashing?), Li scarica e imposta tutto per la build. Se realizzato con python, sarebbe inferiore a 30 righe, forse anche inferiore a 20.

Obs 1: il file contenente la nuova chiave deve essere crittografato. Puoi utilizzare uno simmetrico come AES e il segreto può essere conservato con l'agente.

Obs 2: il metodo migliore per il controllo sarebbe il server Web che genera l'hash e lo invia appena alle richieste dell'agente.

Obs 3: l'agente non dovrebbe decodificare la chiave direttamente sul disco. Potrebbe darti qualche piccolo problema in più, ma sarà meglio se decodificasse solo la chiave in memoria e poi apportasse le modifiche nei file necessari.

Scenario 2

L'agente controlla il disco locale invece di una posizione web, cercando la nuova chiave. Ogni volta che è disponibile, questo robot lo colloca nel posto giusto e pulisce la posizione di "verifica", lasciandola pronta per il prossimo aggiornamento della chiave.

Potresti aggiornare questa chiave tramite SCP / SFTP / OTHER_ENCRYPTED_OPTION e questa procedura di caricamento potrebbe essere automatizzata in base alle tue esigenze.

In questo metodo non è necessario crittografare nulla, tranne il nuovo caricamento della chiave.

    
risposta data 30.10.2014 - 22:37
fonte
0

Potresti lasciare le chiavi su un sistema dedicato e fornire servizi di crittografia tramite la rete . La chiave per accedere a tali servizi di crittografia potrebbe essere condivisa con gli sviluppatori in quanto potrebbe essere utilizzata solo da specifici IP. Un famoso Internet provider ha fatto questo per i certificati SSL (ne ho dimenticato il nome).

    
risposta data 20.12.2014 - 10:25
fonte
0

Di fronte allo stesso problema, alla fine ho deciso di fornire le chiavi crittografiche tramite un'API, quando un'applicazione lo richiede.

Questo ha diversi vantaggi e svantaggi:

  • ti affidi a qualche tipo di contenimento / limitazione. Nel mio caso è stato il filtraggio IP che era ottimale per l'architettura in cui eravamo.
  • esiste il rischio di spoofing IP che deve essere ponderato
  • l'API mi ha anche permesso di fornire una configurazione centralizzata (inviata insieme alle chiavi su richiesta)
risposta data 11.04.2015 - 13:57
fonte

Leggi altre domande sui tag