:::: MENU ::::

Configurando control de accesso a MongoDB con autenticación

Ya había hablado sobre la instalación y el uso de MongoDB, pero seguramente muchos se preguntaran como le dan seguridad a MongoDB para que solo algunos usuarios puedan acceder, e inclusive algunos usuarios solo puedan leer/escribir una sola base de datos, ahora bien, eso es posible, pero no esta activada por defecto.

Seguridad en MongoDB

A la hora de poner en producción algún servicio uno debe asegurar dicho servicio al máximo para evitar malos ratos posteriormente, en el caso de MongoDB es tan sencillo como su propia instalación.

Creando un usuario administrador

Para comenzar, hay que definir un super usuario, para hacerlo, abrimos la shell de MongoDB, nos cambiamos a la BD “admin” (use admin) y agregamos un usuario.

yograterol@localhost ~$ mongo
MongoDB shell version: 2.2.3
connecting to: test
> use admin
switched to db admin
> db.addUser("admin", "admin")
{
 "_id" : ObjectId("5105af4b0527307f8210ca6a"),
 "pwd" : "7c67ef13bbd4cae106d959320af3f704",
 "readOnly" : false,
 "user" : "admin"
}
>

Activando autenticación

Para activar la autenticación hay que modificar el archivo /etc/mongodb.conf

yograterol@localhost ~$ sudo vim /etc/mongodb.conf

Des comentamos “#auth = true” y reiniciamos el servicio.

yograterol@localhost system$ sudo service mongod restart
Redirecting to /bin/systemctl restart  mongod.service

Accediendo a la BD admin

yograterol@localhost system$ mongo
MongoDB shell version: 2.2.3
connecting to: test
> use admin
switched to db admin
> show collections
Sat Mar  9 17:35:43 exec error: src/mongo/shell/query.js:128 error: {
 "$err" : "unauthorized db:admin ns:admin.system.namespaces lock type:0 client:127.0.0.1",
 "code" : 10057
}
throw "error: " + tojson( ret );
                ^

Se accede de manera que siempre lo hacemos, pero si tratamos de ver las colecciones nos lanza un error, por no estar autorizado.

Iniciando Sesión

Para iniciar sesión, hay que ubicarse en la bd de datos y usar el comando db.auth(“usuario”, “pass”)

En el caso anterior

> db.auth("admin", "admin")
1
> show collections
system.indexes
system.users
>

LISTO!  Ya nuestro usuario administrador puede ver todo en la BD.

Ahora creamos otra BD y agregamos un documento.

> use prueba
switched to db prueba
> db.prueba.insert({texto: "hola"});
> db.prueba.find()
{ "_id" : ObjectId("513bb3d23c88facd892eff78"), "texto" : "hola" }
>

Tratamos de acceder

yograterol@localhost system$ mongo
MongoDB shell version: 2.2.3
connecting to: test
> use prueba
switched to db prueba
> db.prueba.find()
error: {
 "$err" : "unauthorized db:prueba ns:prueba.prueba lock type:0 client:127.0.0.1",
 "code" : 10057
}
>

Ya no se puede hacer nada sin tener un usuario.

Creando usuarios comunes

Para crear usuarios hay que iniciar sesión como administrador y luego nos ubicamos en la BD y creamos un usuario.

yograterol@localhost system$ mongo
MongoDB shell version: 2.2.3
connecting to: test
> use admin
switched to db admin
> db.auth("admin", "admin")
1
> use prueba
switched to db prueba
> db.addUser("prueba", "prueba")
{
 "user" : "prueba",
 "readOnly" : false,
 "pwd" : "509ab3f5423ef6c5d3f22cd6f0b7b817",
 "_id" : ObjectId("513bb4b19ea036e88ddacd3e")
}
> show collections
prueba
system.indexes
system.users
>

Testeando el usuario

yograterol@localhost system$ mongo
MongoDB shell version: 2.2.3
connecting to: test
> use prueba
switched to db prueba
> db.auth("prueba", "prueba")
1
> use admin
switched to db admin
> show collections
Sat Mar  9 17:47:23 exec error: src/mongo/shell/query.js:128 error: {
 "$err" : "unauthorized db:admin ns:admin.system.namespaces lock type:0 client:127.0.0.1",
 "code" : 10057
}
throw "error: " + tojson( ret );
                ^

> use prueba
switched to db prueba
> show collections
prueba
system.indexes
system.users
>

Aquí iniciamos como usuario prueba y vemos que en la BD admin no podemos hacer nada :)

Finalizando

Así de fácil se configura el control de acceso por autenticación en MongoDB, así que seguridad para sus servicios. :)

Comentarios

comentarios