Подтвердить что ты не робот

Учетные данные базы данных и leiningen?

Я работаю над веб-приложением clojure, используя leiningen 2 для сборки и развертывания. Это очень ванильный webapp, и я использую compojure, ring и lein-beanstalk. Мое приложение должно использовать как учетные данные базы данных, так и учетные данные S3, и я не уверен, что лучший способ сохранить и получить доступ к ним в моем приложении.

Каков общий способ обработки чувствительных вещей, таких как учетные данные базы данных, которые необходимо развернуть с моим приложением, используя leiningen 2?

мне удалось настроить переменные среды на эластичном бобовом стебле, но я хотел бы избежать этого маршрута, если это возможно.

4b9b3361

Ответ 1

Два способа сделать это. Один из них - использовать переменные среды, что приятно, если все ваши значения конфигурации являются строками, и вам не требуется произвольная вложенность. Лучше всего здесь Environ: https://github.com/weavejester/environ

Другим приятным вариантом является чтение файлов данных Clojure из пути к классам. Вы можете проверить настройки конфигурации dev в своем проекте с помощью директории dev-resources и поместить конфигурацию производства в путь к классам с помощью инструмента развертывания. Преимущество здесь в вашей конфигурации может быть произвольным значением Clojure с вложенными картами и т.д. Самое приятное для этого - Carica: https://github.com/sonian/carica

Ответ 2

Я очень люблю использовать переменные среды для отслеживания переменных окружений.; -)

Другие передают их с помощью параметров -Ddb=foo и читают их с помощью (System/getProperty "db")

Ответ 3

Взгляните на Confijulate - библиотеку, которую я создал для реализации этого шаблона:

https://github.com/bbbates/confijulate

Вы можете хранить пароли или ключи во внешнем файле и загружать его через системное свойство. В функции, которая подключается к S3 или дБ, вы можете расшифровать ее, используя ключ, загруженный с помощью того же механизма. Просто убедитесь, что файл, который вы читаете, читается только пользователем сети (tomcat или jboss или любым другим контейнером, который вы используете с beanstalk).