¿Cómo Se Asegura la base de datos.yml?


Dentro de la base de datos de aplicaciones Ruby on Rails.yml es un archivo de texto plano que almacena las credenciales de la base de datos.

Cuando despliego mis aplicaciones Rails tengo una devolución de llamada después de desplegar en mi Capistrano receta que crea un enlace simbólico dentro del directorio /config de la aplicación a la base de datos.archivo yml. El archivo en sí se almacena en un directorio separado que está fuera de la estructura de directorios estándar Capistrano /releases. I chmod 400 el archivo por lo que sólo es legible por el usuario que lo creé.

  • Es esto suficiente para bloqueo? Si no, ¿qué más haces?
  • Es alguien que encripta su base de datos.yml archivos?
Author: John Topley, 2008-08-20

5 answers

También querrá asegurarse de que su sistema SSH esté bien protegido para evitar que la gente inicie sesión en como su Capistrano bot. Sugiero restringir el acceso a pares de claves protegidas por contraseña.

Cifrando el .el archivo yml en el servidor es inútil ya que tiene que darle al bot la clave, que se almacenaría . . . en el mismo servidor. Cifrarlo en su máquina es probablemente una buena idea. Capistrano puede descifrarlo antes de enviarlo.

 12
Author: James A. Rosen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-08-20 16:41:15

La forma en que he abordado esto es poner la contraseña de la base de datos en un archivo con permisos de lectura solo para el usuario con el que corro mi aplicación. Luego, en la base de datos.yml Uso ERB para leer el archivo:

production:
  adapter: mysql
  database: my_db
  username: db_user
  password: <%= begin IO.read("/home/my_deploy_user/.db") rescue "" end %>

Funciona muy bien.

 39
Author: Olly,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-06-16 13:29:02

Echa un vistazo a esta solución de github: https://github.com/NUBIC/bcdatabase . bcdatabase proporciona un almacén cifrado donde las contraseñas se pueden mantener separadas de los archivos yaml.

Bcdatabase

Bcdatabase es una biblioteca y una utilidad que proporciona la configuración de la base de datos gestión de parámetros para Ruby on Rails aplicación. Proporciona un sencillo mecanismo para separar la base de datos atributos de configuración desde código fuente de la aplicación para que no hay tentación de comprobar contraseñas en el control de versiones sistema. Y centraliza la parámetros para un solo servidor para que se pueden compartir fácilmente entre múltiples aplicaciones y fácilmente actualizado por un solo administrador.

 10
Author: slm,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-09-27 06:00:06

Incluso si asegura la base de datos.archivo yml, las personas todavía pueden escribir que utiliza las mismas credenciales si pueden cambiar el código de su aplicación.

Otra forma de ver esto es: ¿la aplicación web tiene mucho acceso a la base de datos. Si es true, baje los permisos. Dar los permisos suficientes a la aplicación. De esta manera un atacante solo puede hacer lo que la aplicación web sería capaz de hacer.

 3
Author: Peter Stuifzand,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-05-25 18:09:09

Si está muy preocupado por la seguridad del archivo yml, tengo que preguntar: ¿Está almacenado en su control de versiones? Si es así, ese es otro punto donde un atacante puede llegar a él. Si estás haciendo checkout/checkin sobre no SSL, alguien podría interceptarlo.

También, con algún control de versiones (svn, por ejemplo), incluso si lo elimina, todavía está allí en el historial. Por lo tanto, incluso si lo eliminaste en algún momento del pasado, sigue siendo una buena idea cambiar las contraseñas.

 1
Author: Micah,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2008-10-29 16:26:42