Проблемы с безопасностью Dropwizard configuration.yml (где сохранить и должен ли он содержать пароли)

Где должен быть сохранен файл configuration.yml Dropwizard?

Я использую Dropwizard, веб-фреймворк Java. Dropwizard использует файлы configuration.yml для загрузки файлов конфигурации, специфичных для среды. В примере, который я нашел в Интернете, файлы configuration.yml содержат имя пользователя и пароль баз данных. Теперь вопрос в том, где сохранить эти файлы конфигурации, которые содержат пароль в виде обычного текста.

ВАРИАНТ 1 РЕПОЗИТОРИЙ GIT В примере файл configuration.yml является частью проекта. Так что их можно хранить в репозитории git вместе с остальным кодом. Это, однако, хорошо известная плохая практика безопасности. Если кто-то взломает репозиторий git, он получит доступ к коду и базе данных. Также таким образом каждый разработчик имеет доступ ко всем паролям всех сред.

ВАРИАНТ 2. ФАЙЛ НА КОМПЬЮТЕРЕ. Сохраните файл configuration.yml на компьютере, но не храните в репозитории git.

ВАРИАНТ 3 ПЕРЕМЕННЫЕ ОКРУЖАЮЩЕЙ СРЕДЫ Используйте файл configuration.yml, который указывает на переменные среды на конкретной машине. Это не так практично, поскольку все эти переменные среды необходимо устанавливать вручную на всех машинах. Также каков синтаксис для использования ПЕРЕМЕННЫХ ОКРУЖАЮЩЕЙ СРЕДЫ в файлах конфигурации Dropwizard.yml?


person Giorgio    schedule 27.09.2013    source источник
comment
Год спустя кто-то задал аналогичный вопрос, и есть хороший ответ: заголовок stackoverflow.com/questions/23464451/   -  person zloster    schedule 23.02.2016
comment
Есть и другой вариант: 4) зашифровать конфигурацию. Проверьте мой комментарий здесь.   -  person zloster    schedule 23.02.2016


Ответы (2)


Я бы использовал переменные среды, если вы не можете контролировать доступ для чтения к файлу конфигурации или обеспокоены тем, что ваша машина принадлежит ненадежной третьей стороне.

Переменные среды тривиальны для сценария.

person Gary Rowe    schedule 28.09.2013

Вы должны использовать файл на компьютере: так работают многие фреймворки. Если вы используете сервер unix/linux, вы можете chmod 0600 [filename] быть уверенным, что никто (почти никто как root не может ничего сделать) не сможет прочитать этот файл. В dropwizard ML также упоминалось об использовании программного обеспечения, такого как puppet/chef, для развертывания вашего приложения и использования этих сред для обработки всех переменных (например, различных конфигураций для тестирования/постановки/производства).

Пока Пьеро

person Piero Ottuzzi    schedule 10.10.2013