2011-03-01 13 views
7

Tengo una pequeña aplicación de Sinatra que estoy ejecutando en Heroku que usa una sola contraseña de administrador, más un par de claves de autenticación API.dónde almacenar la contraseña de administrador en la aplicación sinatra + heroku?

¿Dónde está el mejor lugar para guardar estas cosas? ¿Los pongo en variables de entorno y uso

heroku config:add ADMIN_PASSWORD=foobar 

? ¿O utilizo un archivo de configuración que los contiene, y simplemente no confío el archivo de configuración?

Respuesta

12

me quedo claves de la API y ese tipo de cosas en un yaml config, al igual que

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

a continuación, utilizar de Sinatra orden interna set para manejar los datos.

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 

Y entonces puedo acceder a ellos desde los ajustes objeto. Aunque no estoy seguro de por qué no comprometerías el archivo de configuración. . . aquí no existe un gran riesgo de seguridad, ya que solo se puede acceder a las rutas que ha definido explícitamente a través de la web. Supongo que la contraseña de administrador podría almacenarse de la misma manera si no desea ponerla en una base de datos, pero al menos la encriptaría con un salt.

Solo tenga cuidado de no pisar el Configuration settings de Sinatra cuando defina el suyo.

EDIT:

Creo que acabo de dar cuenta por qué prefiere no cometer el archivo de configuración. Si está trabajando en un proyecto de código abierto, seguramente no querrá enviar el archivo de configuración a su repositorio de código abierto, pero deberá enviar el archivo a Heroku para que funcione. Si este es el caso, ya sea:

  • Utilice dos repositorios locales separados: uno para el proyecto de código abierto y otro para el proyecto heroku. Simplemente configure el proyecto de código abierto como un repositorio en sentido ascendente en el proyecto Heroku, luego puede buscar cambios.
  • Ponga las claves API y la contraseña cifrada/salada en una base de datos; MongoHQ ofrece un nivel gratuito para los usuarios de Heroku como un complemento para el almacenamiento simple de nosql usando MongoDB.
Cuestiones relacionadas