Por defecto, si instalamos el motor de base de datos de MongoDB, no hay seguridad. Es decir, cualquiera puede entrar y hacer lo que se le antoje, pues no hay permisos ni usuarios. Por eso es que hoy veremos:
- Cómo habilitar la seguridad en MongoDB
- Cómo crear un usuario administrador
De esta manera tendremos nuestra base de datos asegurada, o bueno, al menos tendremos roles y permisos para que no cualquiera se pueda loguear.
En otras palabras, en este post trato de explicar cómo asegurar nuestra instalación de MongoDB creando nuestro usuario administrador.
Requisitos
Obviamente debes tener el motor de MongoDB. Si usas Windows, este es tu tutorial.
Crear usuario administrador
Como la primera vez no hay roles, podemos loguearnos sin que nos pida credenciales. Ve a una terminal y ejecuta la shell de mongo con:
mongo
Una vez logueado, escribe lo siguiente para cambiar a la base de datos admin:
use admin
Cuando se muestre el mensaje de switched to db admin entonces es hora de crear el usuario administrador llamando a la función db.createUser
y pasándole el usuario; el cual tiene este formato:
db.createUser({
user: "parzibyte",
pwd: "hunter2",
roles: [
{
role: "userAdminAnyDatabase",
db: "admin"
},
"readWriteAnyDatabase"
],
});
Lo que no debes cambiar son los roles; o bueno, cámbialos si sabes cómo funcionan, ya que esos que pongo son los necesarios para que se haga un usuario administrador.
Obviamente cambia la contraseña y el usuario, no vayas a dejarlo así como en el ejemplo. Y por favor, elige una contraseña segura y difícil de adivinar o romper por fuerza bruta.
Habilitar seguridad o autenticación en archivo de configuración
Primero creamos el usuario, y luego habilitamos la seguridad o autenticación. Si lo hiciéramos al revés, entonces se pondría la autenticación y no habría usuario con el que loguearse.
Pero bueno, ahora vamos a habilitar la autenticación, así que busca el archivo de configuración que se encuentra la mayoría de veces junto al ejecutable de MongoDB; si seguiste el tutorial que puse anteriormente esto no debería complicarse. Si no, entonces lee la documentación dependiendo de tu sistema operativo.
El archivo se llama mongod.cfg.
En mi caso, se encuentra en C:\Program Files\MongoDB\Server\4.0\bin. Ahora lo abrimos con un editor de texto plano, ejecutado como administrador.
Una vez abierto, busca un comentario que diga #security
y añade:
security:
authorization: enabled
El mío queda así:
Guarda cambios y ya casi terminamos.
Reiniciar servidor de MongoDB
Ahora puedes reiniciar el servidor. Si estás en Windows, la manera más amigable es ir a servicios, buscar el de MongoDB, hacer click en Detener y luego en Iniciar.
Iniciar sesión, con autenticación
Si ejecutas mongo de nuevo, te permitirá entrar pero al ejecutar show databases (por ejemplo) te dirá que no estás autorizado.
Muy bien, entonces ya podemos loguearnos. Existen dos formas.
Autenticarse al ejecutar mongo
Puedes ejecutar mongo y pasarle algunos argumentos, así:
mongo -u "usuario" -p "contraseña" --authenticationDatabase "admin"
Cambia tu usuario y contraseña, deja la base de datos intacta, pues ahí nos dimos de alta cuando creamos el usuario. Si todo es correcto, te dejará pasar y ejecutar comandos:
Iniciar mongo y luego autenticarse
Igualmente puedes ejecutar mongo, y una vez logueado poner use admin
para cambiar a la base de datos a admin, para más tarde ejecutar:
db.auth("usuario", "contraseña");
Así:
Conclusiones y referencias
Si quieres saber de dónde me basé, aquí está el link. Más tarde puedes hacer otras llamadas a db.createUser
y darle roles que ya vienen incluidos por defecto, o crear los tuyos.
Hola, ayer inicie con normalidad, pero ahora me sale el sgte. error :
> mongo –port 27017 -u “superAdmin” -p “pass1234” –authenticationDatabase “admin”
2020-03-23T09:56:18.376-0500 E QUERY [js] uncaught exception: SyntaxError: unexpected token: identifier :
@(shell):1:8
que podria ser ? gracias
Que tal estoy siguiendo este tutorial para habilitar la autenticacion de usuarios, todo esta bien hasta el momento en que toca reiniciar el servicio de MongoDB, cuado lo detengo y vuelvo a iniciar me marca un error, y ya no se puede iniciar el servicio, posteriormente cuando ejecuto mongod.exe y mongo.exe, al ejecutar “show dbs”, las bases de datos que tenia desaparecen, si reinstalo MongoDB todo se restaura y las bases que tenia vuelven a aparecer. Vuelvo a intentar hacer la autenticación, pero esta vez en lugar de “Detener” e “Iniciar” el servicio, doy clic en “Reiniciar” y ocurre lo mismo que describi.
¿Hay otra forma de hacer esto? o ¿Como podria solucionarlo?
Gracias
Tal vez son permisos del sistema o te estás saltando alguna parte del tutorial. ¿Qué error específicamente marca? trata de ejecutarlo como administrador o de poner la carpeta de datos en un lugar no protegido