Pregunta

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

Cuando despliego mis aplicaciones Rails tengo un después de implementar de devolución de llamada en mi Capistrano la receta que crea un enlace simbólico dentro de la aplicación /config del directorio de la base de datos.fichero yaml.El archivo se almacena en un directorio independiente que está fuera de la norma Capistrano /releases estructura de directorios.Yo chmod 400 el archivo, así que sólo es legible por el usuario que la ha creado.

  • Es esto suficiente para bloqueo?Si no, ¿qué otra cosa puede hacer?
  • Es cualquiera el cifrado de su base de datos.yml archivos?
¿Fue útil?

Solución

Usted también querrá asegurarse de que su SSH sistema está bien protegido para evitar que la gente de registro en como su Capistrano bot.Yo sugeriría que la restricción de acceso a la contraseña-protegidos pares de claves.

El cifrado de la .yml archivo en el servidor es inútil, ya que tienes que darle al bot de la clave, que se almacenan ...en el mismo servidor.El cifrado en el equipo es probablemente una buena idea.Capistrano puede descifrar antes de enviar.

Otros consejos

De la manera que he abordado este es para poner la contraseña de base de datos en un archivo con permisos de lectura sólo para el usuario que ejecuto mi aplicación como.Luego, en la base de datos.yml yo 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 de maravilla.

Echa un vistazo a este github solución: https://github.com/NUBIC/bcdatabase.bcdatabase proporciona un cifrado de la tienda donde las contraseñas se mantienen separados de los archivos yaml.

bcdatabase

bcdatabase es una biblioteca y utilidad que proporciona la base de datos de configuración gestión de parámetros para Ruby on Rails aplicaciones.Se proporciona un simple mecanismo para separar la base de datos configuración de atributos de código fuente de la aplicación para que no hay ninguna tentación para comprobar las contraseñas en el control de versiones sistema.Y centraliza la los parámetros para un único servidor, de modo que ellos pueden ser fácilmente compartidos entre múltiples aplicaciones y fácilmente actualizado por un administrador único.

Incluso si usted segura de la base de datos.fichero yaml, la gente puede escribir que utiliza las mismas credenciales si se puede cambiar el código de la aplicación.

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

Si usted está muy preocupado por la seguridad del fichero yaml, tengo que preguntar:Se almacena en su versión de control?Si es así, ese es otro punto en el que un atacante puede acceder a la misma.Si vas a hacer checkout/checkin sobre los no-SSL, alguien podría interceptarlo.

También, con algo de control de versiones (svn, para exampl), incluso si la quitas, ahí sigue en la historia.Por lo tanto, incluso si usted quita que en algún momento en el pasado, es una buena idea cambiar las contraseñas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top