где хранить пароль администратора в приложении sinatra + heroku? - PullRequest
7 голосов
/ 01 марта 2011

У меня есть небольшое приложение Sinatra, которое я запускаю на Heroku, которое использует один пароль администратора и пару ключей аутентификации API.

Где лучшее место для хранения этих вещей? Я помещаю их в переменные окружения и использую

heroku config:add ADMIN_PASSWORD=foobar

? Или я использую файл конфигурации, который содержит их, и я просто не фиксирую файл конфигурации?

1 Ответ

12 голосов
/ 02 марта 2011

Я вставляю ключи API и тому подобное в конфигурационный yaml, например,

development:
  twitter_api_key: stringstringstring 
  chunky: bacon
production:
  twitter_api_key: gnirtsgnirtsgnirts
  foo: bar

, а затем использую встроенный набор Sinatra для обработки данных.

configure do   
    yaml = YAML.load_file(settings.config + "/config.yaml")[settings.environment.to_s]
    yaml.each_pair do |key, value|
      set(key.to_sym, value)
    end
end 

И я могу получить к ним доступ из объекта settings .Я не уверен, почему вы не передадите файл конфигурации, хотя.,,Здесь нет серьезной угрозы безопасности, так как только те пути, которые вы явно определили, могут быть доступны через Интернет.Я думаю, пароль администратора может храниться таким же образом, если вы не хотите помещать его в базу данных, но я бы хотя бы зашифровал его с помощью salt .

Простостарайтесь не наступать на настройки конфигурации Sinatra при определении своих собственных.

РЕДАКТИРОВАТЬ:

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

  • Использовал два отдельных локальных репо: одно для проекта с открытым исходным кодом, а другое для проекта heroku.Просто установите проект с открытым исходным кодом в качестве вышестоящего репозитория в проекте Heroku, и вы сможете получать изменения.
  • Поместите как ключи API, так и зашифрованный / соленый пароль в базу данных; MongoHQ предлагает пользователям Heroku бесплатный уровень в качестве дополнения для простого хранения nosql, используя MongoDB .
...