Habilitar autenticación y crear administrador en MongoDB

Publicado por parzibyte en

Autenticarse después de entrar a mongo

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:

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:

El mío queda así:

Habilitar autenticación en archivo de configuración de MongoDB

Habilitar autenticación en archivo de configuración de MongoDB

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:

Autenticarse al ejecutar mongo

Autenticarse al ejecutar mongo

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í:

Autenticarse después de entrar a mongo

Autenticarse después de entrar a mongo

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.


parzibyte

He trabajado por más de 4 años en el desarrollo de software con experiencia en Java, PHP, JavaScript, HTML, Node.JS, Python, Android y Go. También he trabajado con bases de datos SQL como MySQL y SQLite, así como con bases de datos NoSQL usando MongoDB.Soy bueno utilizando algunos frameworks y herramientas como Firebase, jQuery, AngularJS, VueJS, CodeIgniter, Laravel, BulmaCSS, Bootstrap y Electron.Otros términos que conozco son: Arduino, GraphQL, API's, REST, AJAX, PouchDB, CouchDB, Experiencia de usuario, buenas prácticas de programación, Webpack, NPM, Administración de servidores y programación de scriptsLa plataforma en la que tengo más experiencia es la web, pero en mis ratos libres realizo unos pequeños ejercicios en C# y C.Estoy aquí para ayudarte a resolver tus problemas de programación y depuración :-)

2 Comments

Robert · febrero 15, 2019 a las 12:29 pm

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

    parzibyte · febrero 15, 2019 a las 1:09 pm

    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

Deja un comentario

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.

A %d blogueros les gusta esto: