2014-12-18 24 views
7

Ho la mia app all'interno di un container e sta leggendo le variabili di ambiente per le password e le chiavi API per accedere ai servizi. Se eseguo l'app sulla mia macchina (non nella finestra mobile), ho solo export SERVICE_KEY='wefhsuidfhda98' e l'app può utilizzarla.Docker: come fornire informazioni segrete al contenitore?

Qual è l'approccio standard a questo? Stavo pensando di avere un file segreto che sarebbe stato aggiunto al server con i comandi export e quindi eseguire uno source su quel file.

Utilizzo la finestra mobile & fig.

risposta

5

La soluzione su cui ho optato è stata la seguente: salvare le variabili di ambiente in un file segreto e trasferirle sul contenitore utilizzando la fig.

  • avere un file secret_env con informazioni segrete, ad es.

    export GEO_BING_SERVICE_KEY='98hfaidfaf' 
    export JIRA_PASSWORD='asdf8jriadf9' 
    
  • hanno secret_env nel mio .gitignore
  • dispone di un file secret_env.template per gli sviluppatori, per esempio

    export GEO_BING_SERVICE_KEY='' # can leave empty if you wish 
    export JIRA_PASSWORD='' # write your pass 
    
  • nel mio fig.yml mando le variabili attraverso:

    environment: 
    - GEO_BING_SERVICE_KEY 
    - JIRA_PASSWORD 
    
  • chiamata source secret_env prima di costruire
4

docker run fornisce le variabili di ambiente:

docker run -e SERVICE_KEY=wefsud your/image 

Poi l'applicazione avrebbe letto SERVICE_KEY dall'ambiente.
https://docs.docker.com/reference/run/

In figura, utilizza

environment: 
    - SERVICE_KEY: wefsud 

nella vostra applicazione specifica. http://www.fig.sh/yml.html

Dal punto di vista della sicurezza, la soluzione precedente non è peggiore di eseguirla sul tuo host se il tuo binario docker richiede l'accesso come root. Se si consente agli utenti del gruppo "docker" di eseguire la finestra mobile, è meno sicuro, poiché l'utente di una finestra mobile può utilizzare il contenitore in esecuzione docker inspect. In esecuzione sul tuo host, avresti bisogno di essere root per ispezionare le variabili di ambiente di un processo in esecuzione.

+0

vorrei aggiungere una nota che poiché il vostro fig.yml è normalmente controllato in controllo del codice sorgente e non dovresti commettere segreti nel controllo del codice sorgente, potrebbe essere utile generare il tuo fig.yml al volo da un modello. –

Problemi correlati