2014-12-18 2 views
7

У меня есть мое приложение внутри контейнера, и это переменные среды чтения для паролей и ключей API для доступа к службам. Если я запустил приложение на своей машине (не внутри докера), я просто export SERVICE_KEY='wefhsuidfhda98', и приложение сможет его использовать.Докер: как предоставить секретную информацию контейнеру?

Каков стандартный подход к этому? Я думал о секретном файле, который будет добавлен на сервер с командами export, а затем запустите source в этом файле.

Я использую докер & рис.

ответ

5

Решение, на котором я остановился, состоял в следующем: сохранить переменные среды в секретном файле и передать их в контейнер, используя рис.

  • имеет файл secret_env с секретной информацией, например.

    export GEO_BING_SERVICE_KEY='98hfaidfaf' 
    export JIRA_PASSWORD='asdf8jriadf9' 
    
  • имеет secret_env в моем .gitignore
  • имеет secret_env.template файл для разработчиков, например

    export GEO_BING_SERVICE_KEY='' # can leave empty if you wish 
    export JIRA_PASSWORD='' # write your pass 
    
  • в моей fig.yml Я посылаю переменные через:

    environment: 
    - GEO_BING_SERVICE_KEY 
    - JIRA_PASSWORD 
    
  • вызов source secret_env перед сборкой
4

docker run обеспечивает переменные окружения:

docker run -e SERVICE_KEY=wefsud your/image 

Ваше приложение будет читать ключ_обслуживани из окружающей среды.
https://docs.docker.com/reference/run/

На рисунке, вы будете использовать

environment: 
    - SERVICE_KEY: wefsud 

в вашем приложении спецификации. http://www.fig.sh/yml.html

С точки зрения безопасности, первое решение не хуже, чем запуск его на вашем хосте, если для двоичного файла docker требуется root-доступ. Если вы разрешаете пользователям группы «докеров» запускать докеры, это менее безопасно, так как любой пользователь докеров может docker inspect запущенного контейнера. На вашем хосте вы должны быть root, чтобы проверять переменные среды выполняемого процесса.

+0

Я хотел бы добавить к сведению, что с вашей fig.yml обычно проверяется в систему управления версиями и вы не должны передавать секреты в исходный контроль, может быть полезно создать ваш fig.yml «на лету» из шаблона. –

Смежные вопросы