Añade autenticación a tu servidor MongoDB

MongoDB tiene grandes abanicos de uso, y también es importante una correcta administración de usuarios del mismo. En unos simples pasos, vamos a ver cómo configurar el sistema de autenticación de MongoDB.

Si queremos configurar nuestro servidor de base de datos para poder recibir conexiones desde fuera (para nuestra propia administración remota, por ejemplo), tendremos que activar el sistema de autenticación, y configurar las interfaces de red de entrada. MongoDB tiene por defecto un sistema de autenticación deshabilitado. Mientras está deshabilitado, puedes seguir utilizando el servidor con las credenciales root, y el password vacío.

 

La autenticación en MongoDB

El sistema de autenticación de MongoDB funciona mediante dos tipos de usuarios: aquellos que son creados en la base de datos “admin” (una base de datos del sistema), que tienen privilegios sobre todas las bases de datos, y los que son creados dentro de las propias bases de datos, que tienen privilegios únicamente sobre las bases de datos que los contienen.
En primer lugar, conectaremos al servidor desde el mismo servidor para crear un nuevo usuario root (ya que al habilitar la autenticación, el que viene por defecto desaparecerá):

mongo
use admin
db.createUser({user: "superadmin", pwd: "tuPassword", roles: ["root"]});

Con esto ejecutado, ya tendremos nuestro usuario superadmin preparado. Ahora editaremos el fichero de configuración de MongoDB para habilitar la autenticación:

sudo nano /etc/mongod.conf

Y ahora editaremos la opción de bindIp, en la que tendremos que añadir la IP externa de nuestro servidor:

net:
  port: 27017
  bindIp: 127.0.0.1,nuestraIp

Además, deberemos habilitar la seguridad en nuestro servidor añadiendo:

security:
  authorization: enabled

Una vez editado el fichero, procederemos a guardarlo y a reiniciar el servidor:

sudo service mongod stop
sudo service mongod start

Una vez hecho esto, ya podremos acceder a nuestro servidor mediante el comando:

mongo admin -u superadmin -p tuPassword

Si accedemos desde fuera:

mongo tuIp:27017/admin -u superadmin -p tuPassword

Por último, si queremos crear usuarios específicos para una base de datos, podemos añadirlos accediendo al servidor con nuestro usuario superadmin, y ejecutando:

use yourDatabase
db.createUser({user: "yourdatabaseuser", pwd: "tuPassword", roles: ["dbOwner"]});

En este caso, estaremos creando un usuario con todos los privilegios sobre esa propia base de datos. Recordamos que en este caso, así como también añadiendo usuarios de administración global, tenemos un amplio abanico de roles por utilizar. Puedes visualizarlos todos accediendo a la documentación oficial aquí.

Aplicando estos sencillos pasos, podrás pasar a administrar tu base de datos remotamente mediante tu cliente GUI favorito, como Robomongo (utilizar versión igual o superior a 0.9.0 RC8 por problemas de autenticación).

La correcta administración de usuarios (con el uso de passwords complejos), como también el uso de reglas de firewall personalizadas para bloquear todas las entradas y aceptar únicamente las de nuestra IP, y otros métodos (SSH…), permitirán establecer una mayor seguridad a nuestro servidor.

 

Fuentes:

https://docs.mongodb.com/v2.6/tutorial/add-user-administrator/

https://docs.mongodb.com/manual/tutorial/manage-users-and-roles/

One Comment

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *