2015-12-22 5 views
7

Quando si esegue un database PostgreSQL in un contenitore Docker, l'documentation per il funzionario PostgreSQL Docker immagine specifica che la password di amministratore deve essere impostata in una variabile ambientale come:Specificando la password PostgreSQL superutente per un Docker contenitore

docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres 

Per coloro che non desiderano codificare una password di testo in chiaro nei propri script, ci sono opzioni più sicure da considerare?

risposta

4

L'inserimento delle impostazioni di configurazione come variabili di ambiente è l'approccio alla configurazione dell'applicazione consigliato dal sito Web 12 factor app.

In alternativa è possibile creare il proprio contenitore che legge la sua configurazione dal file di configurazione personalizzato:

docker run -d mydockerapp --config mydevconfig.yaml 

Ma in realtà l'uso di variabili di ambiente ha il vantaggio in termini di flessibilità perché è onnipresente su tutte le piattaforme. Per rendere più appetibili le variabili di ambiente, è possibile specificarle all'interno di un file. Questo almeno garantirà un utente malintenzionato sulla stessa macchina non poteva raccogliere le credenziali da un elenco processo:

$ cat env.db 
POSTGRES_DB=myappdb 
POSTGRES_USER=admin 
POSTGRES_PASSWORD=pleasechangeme 

$ docker run --name postgres --env-file=env.db -d postgres 

Infine, ho scoperto che ci sono un certo numero di richieste di funzionalità eccezionali per un migliore supporto segreto di finestra mobile:

Nella mia esperienza la convenienza ha l'abitudine di trumping di sicurezza, quindi immagino ci vorrà del tempo per una soluzione accettabile per guadagnare sufficiente mente-share. Personalmente prevedo una soluzione emergente che emula quello che il progetto kubernetes sta facendo con volumi di dati cifrati: