Что такое лучшее решение для хранения пароля в рельсы YML-файл? - PullRequest
1 голос
/ 12 марта 2020

Я жестко прописал имя пользователя и пароль в файле database.yml в моем проекте rails. Но я боюсь, что, если я загружу его в GitHub, мой пароль может быть утек.

Итак, каково общее решение для безопасного хранения пароля в файле rails?

Этот фрагмент кода показывает, как я сохранил пароль.

Спасибо.

development:
  <<: *default
  adapter: postgresql
  encoding: unicode
  database: myapp_development
  pool: 5
  username: myapp
  password: 123456789

Ответы [ 3 ]

2 голосов
/ 12 марта 2020

Если вы используете Rails> 5.2, вы можете использовать rails Credentials. Если он не существует, ключ будет создан при запуске rails credentials:edit.

Вы можете отредактировать его, как показано ниже -

EDITOR=vim rails credentials:edit

и добавить, как показано ниже -

postgres:
  username:
    development: ABC
    staging: XYZ
  password:
    development: Yzx234354
    staging: "fooBar%@3"

В вашем database.yml вы можете использовать его как -

development:
  <<: *default
  adapter: postgresql
  encoding: unicode
  database: myapp_development
  pool: 5
  username: Rails.application.credentials.dig(:postgres, :username, :development)
  password: Rails.application.credentials.dig(:postgres, :password, :development)

Просто поставьте master.key in .gitignore и вы будете в безопасности от всех недоразумений.

1 голос
/ 12 марта 2020

Другой вариант, следующий за использованием учетных данных rails (как ответил Рафайет Монон), будет использовать файл .env, который вы поместите в root вашего проекта rails (и не регистрируйте в git). Внутри вашего приложения вы просто используете ENV['MY_VAR'] (или ENV.fetch('MY_VAR', 'default value if not defined')).

Это легко сделать с помощью драгоценного камня dotenv-rails, основанного на https://github.com/bkeepers/dotenv.

Я использую этот подход, потому что мне также приходится обрабатывать множество других проектов (например, основанных на php), и каждый проект использует один и тот же подход .env, чтобы поддерживать его согласованность для проектных команд. В качестве дополнительной помощи, _.env.example фиксируется, что содержит все возможности с краткой документацией, поэтому каждый, кто должен настроить проект, знает, что нужно настроить, чтобы его запустить и запустить.

Также приятной особенностью реализации ruby dotenv является проверка наличия обязательных переменных, которые можно поместить в инициализатор. У dotenv README есть раздел об этом.

0 голосов
/ 12 марта 2020

Не думаю, что вам нужны имя пользователя и пароль для базы данных. Вы можете просто удалить эти строки. В среде разработки (localhost) база данных находится на вашем компьютере, поэтому никто другой не может получить к ней доступ. В производстве, если вы используете heroku, они позаботятся о добавлении имени пользователя и пароля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...