2011-03-23 17 views
7

Quiero crear la base de datos en mongodb que sea segura.crear base de datos segura en mongodb

Seguro significa que la aplicación debe pasar nombre de usuario/contraseña para conectarse a mi base de datos en mongodb.

+1

¿Cuál es la pregunta? – Mat

Respuesta

18

De Mongo tutorial de Java

MongoDB se puede ejecutar en un modo seguro, donde el acceso a bases de datos se controla mediante nombre y contraseña de autenticación. Cuando se ejecuta en este modo, cualquier aplicación cliente debe proporcionar un nombre y una contraseña antes de realizar cualquier operación. En el controlador de Java, sólo tiene que hacer lo siguiente con el objeto mongo conectado:

boolean auth = db.authenticate(myUserName, myPassword); 

Si el nombre y la contraseña son válidos para la base de datos, autenticación será verdad. De lo contrario, será falso. Debería consultar el registro de MongoDB para obtener más información, si está disponible.

La mayoría de los usuarios ejecutan MongoDB sin autenticación en un entorno confiable.


Configuración de la autenticación y la seguridad

autenticación se almacena en la colección system.users de cada base de datos. Por ejemplo, en una base de datos projectx, projectx.system.users contendrá información del usuario.

Primero debemos configurar un usuario administrador para todo el proceso de servidor de db. Este usuario está almacenado en la base de datos de administración especial.

Si no hay usuarios configurados en admin.system.users, uno puede acceder a la base de datos desde la interfaz del host local sin autenticarse. Por lo tanto, desde el servidor que ejecuta la base de datos (y por lo tanto en el servidor local), ejecutar el shell de base de datos y configurar un usuario administrativo:

$ ./mongo 
> use admin 
> db.addUser("theadmin", "anadminpassword") 

Ahora tenemos un usuario creado para admin base de datos. Tenga en cuenta que si no hemos autenticado previamente, ahora debemos hacerlo si deseamos realizar más operaciones, ya que hay un usuario en admin.system.users.

> db.auth("theadmin", "anadminpassword") 

Podemos ver los usuarios existentes de la base de datos con el comando:

> db.system.users.find() 

Ahora, vamos a configurar un usuario "normal" de otra base de datos.

> use projectx 
> db.addUser("joe", "passwordForJoe") 

Finalmente, agreguemos un usuario de solo lectura. (solo compatible con 1.3.2+)

> use projectx 
> db.addUser("guest", "passwordForGuest", true) 
+0

Así que creó su administrador 'theadmin' en la base de datos de administración, luego reinició mongod con la opción' --auth'. ¿Cómo es que ahora, si haces './mongo admin', serás registrado automágicamente sin el usuario y aprobado? – Strae

+0

En ese caso, ha iniciado el shell mongo pero aún no se ha autenticado.Intenta hacer cualquier operación, por ejemplo 'show collections', obtendrás un error' no autorizado'. – WildService

3
  • Crear un usuario administrador de la instancia de Mongo,

> use admin

> db.addUser("admin", "xyzxyz")

  • Cambiar a DB para el cual se requiere la autenticación

> use newdb

> db.addUser("newuser", "strongpwd")

  • Detener la instancia mongo/servicio. Si mongodb se instaló a través de ppa, entonces se configura como un servicio.

sudo service mongodb stop

Si se ha instalado desde las fuentes, detener el proceso usando:

/etc/init.d/mongodb stop

  • Cambiar el archivo de configuración para utilizar la autenticación por defecto

vim /etc/mongodb.conf

auth = true

  • inicio mongodb. Si se trata de un servicio

sudo service mongodb restart

demás

mongod --config /etc/mongodb.conf

  • Compruebe si está activada de autenticación:

> show collections en newdb debe dar el error

"$err" : "not authorized for query on newdb.system.namespaces", 
"code" : 16550 

y debe trabajar después

> db.auth("newuser", "strongpwd")

Ahora el PP newdb está asegurada.

Cuestiones relacionadas