Come archiviare le credenziali richieste da un'applicazione?


13

Tutti dicono che archiviare le credenziali nel controllo versione (git) è una cosa negativa. Quindi ci devono essere altri modi per archiviare le credenziali che sono molto meglio.

Un'applicazione deve ricevere credenziali da qualche parte per utilizzare i servizi da cui dipende. Queste credenziali sono generalmente archiviate nei file di configurazione. L'immissione manuale di ciascun server per creare quel file è fuori discussione, poiché i server vanno e vengono senza intervento umano.

Come gestire le credenziali di un'applicazione?


4
Anche questo è probabilmente troppo ampio per una singola risposta che non ha le dimensioni di un libro.
coderanger

1
@coderanger Guardando la tua presentazione, la tua categorizzazione dei diversi tipi di segreti è fantastica. E posso vedere come pensi che sia un libro ... ma la domanda sopra non richiede una classificazione, ma solo una soluzione per un problema specifico.
Evgeny

2
Se hai una situazione specifica, modifica la domanda per includere ulteriori dettagli come il tipo di segreto utilizzato (password del database, chiavi TLS, ecc.).
coderanger

1
Questo è troppo ampio. Sono disponibili almeno 14 strumenti disponibili per farlo, esclusi script o modelli personalizzati: gist.github.com/maxvt/bb49a6c7243163b8120625fc8ae3f3cd Sono richiesti ulteriori dettagli (come è richiesta una CLI, è per una soluzione cloud-native o per grandi applicazioni monolitiche, ecc.)
Alexandre

1
@Alexandre Hah, l'ho aperto e ho pensato "yay una buona lista di compilation" e poi mi vedo citato in fondo :)
coderanger

Risposte:


5

La corretta gestione dei segreti di un'applicazione è sempre stata una sfida. Nuove sfide sono arrivate con l'adozione del cloud. C'è una grande presentazione OWASP sulla realtà e le sfide della memorizzazione dei segreti nel cloud.

Potresti essere sorpreso di sapere che archiviare i segreti nel codice sorgente è una delle soluzioni (o "architettura") presentate. Questo perché, in questo momento, non esiste un'architettura o un modo perfetti per farlo. Alla fine, i tuoi segreti potrebbero essere crittografati ... ma cosa protegge la chiave di crittografia? "Tartarughe fino in fondo", hanno detto.

Ogni tipo di gestione segreta ha i suoi punti di forza e di debolezza e la presentazione lo copre già. Invece, proverò a esaminare alcune delle funzionalità che potresti cercare in una soluzione di gestione segreta (credenziale):

  • Controllo degli accessi: puoi dare accesso in scrittura agli amministratori e accesso in lettura alle applicazioni? Puoi limitare quali applicazioni sono in grado di leggere (l'applicazione A ha accesso solo a quei segreti)?
  • Log di controllo: necessari per molti rapporti di conformità e un buon modo per capire se qualcosa non va
  • Archiviazione sicura dei segreti: in che modo la soluzione archivia i segreti? DB crittografato? FS crittografato? Chi / cosa detiene la chiave di crittografia, se presente? Come viene utilizzata questa chiave, una volta all'avvio e quindi eliminata in modo sicuro?
  • Rotazione o rinnovo di chiavi / password: se un segreto viene compromesso, è possibile revocarlo e inviare un segreto aggiornato alle applicazioni? Le applicazioni possono / dovrebbero raggruppare il servizio di gestione segreto?
  • Compatibilità: alcune di queste soluzioni offrono una stretta integrazione con determinate lingue o framework. Alcuni offrono API REST. Sei interessato a questo?

Osservando questi elementi, quanto sono importanti per te e come vengono implementati dalla soluzione, sarai in grado di scegliere uno dei servizi di gestione segreta disponibili .


3

Per un ambiente puramente basato su EC2, la soluzione più semplice è utilizzare i ruoli AWS IAM e le policy bucket S3. Alcune formulazioni di questo modello includono anche KMS per la crittografia e DynamoDB invece di S3 per l'archiviazione, ma non ho trovato un motivo estremamente convincente da usare. Dai un'occhiata a https://github.com/poise/citadel , è specificamente rivolto agli utenti Chef ma il modello sottostante funziona per qualsiasi cosa, potresti dover creare il tuo aiuto personale per eseguire il download effettivo da S3.


1
Per il futuro, questo risponde a una versione precedente e più specifica della domanda.
coderanger

2
AWS ora offre un servizio dedicato per l'archiviazione di valori-chiave, inclusa la crittografia tramite KMS: aws.amazon.com/ec2/systems-manager/parameter-store .
bnzmnzhnz,
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.