2014-12-18 20 views
7

Mam app wewnątrz kontenera i odczytuje zmienne środowiskowe dla haseł i kluczy API, aby uzyskać dostęp do usług. Jeśli uruchomię aplikację na moim komputerze (nie w doku), po prostu export SERVICE_KEY='wefhsuidfhda98' i aplikacja może z niej korzystać.Docker: jak przekazać tajne informacje do kontenera?

Jakie jest standardowe podejście do tego? Myślałem o tajnym pliku, który zostałby dodany do serwera za pomocą poleceń export, a następnie uruchom na tym pliku source.

Używam docker & rys.

Odpowiedz

5

Rozwiązanie, na które się zdecydowałem, było następujące: zapisać zmienne środowiskowe w tajnym pliku i przekazać je do kontenera za pomocą rys.

  • mają plik secret_env z tajnymi informacjami, np.

    export GEO_BING_SERVICE_KEY='98hfaidfaf' 
    export JIRA_PASSWORD='asdf8jriadf9' 
    
  • mieć secret_env w moim .gitignore
  • mieć plik secret_env.template dla twórców, na przykład

    export GEO_BING_SERVICE_KEY='' # can leave empty if you wish 
    export JIRA_PASSWORD='' # write your pass 
    
  • w moim fig.yml wyślę zmiennych poprzez:

    environment: 
    - GEO_BING_SERVICE_KEY 
    - JIRA_PASSWORD 
    
  • połączenia source secret_env przed budową
4

docker run zapewnia zmienne środowiskowe:

docker run -e SERVICE_KEY=wefsud your/image 

Następnie aplikacja będzie czytać SERVICE_KEY z otoczenia.
https://docs.docker.com/reference/run/

Na rys, można użyć

environment: 
    - SERVICE_KEY: wefsud 

w aplikacji spec. http://www.fig.sh/yml.html

Z punktu widzenia bezpieczeństwa poprzednie rozwiązanie nie jest gorsze niż uruchamianie go na hoście, jeśli plik binarny okna dokowanego wymaga uprawnień administratora. Jeśli zezwalasz użytkownikom grupy "dokujacy" na uruchamianie okna dokowanego, jest on mniej bezpieczny, ponieważ każdy użytkownik dokowania może mieć uruchomiony kontener. Działając na hoście, musisz być rootem, aby sprawdzić zmienne środowiskowe uruchomionego procesu.

+0

chciałbym dodać notatkę, że skoro twój fig.yml normalnie sprawdzone pod kontrolą źródła i nie powinieneś angażować sekretów w kontrolę nad źródłem, dobrze jest wygenerować swój fig.yml na bieżąco z szablonu. –

Powiązane problemy