Ir al contenido principal

Cloud & IaaS — Configurar MongoDB de forma segura

L
Escrito por Luciana Parente

Aplica a: Cloud Server con MongoDB instalado · Tiempo estimado: 15 min


¿Qué vas a lograr?

Configurar MongoDB con autenticación, crear bases de datos y usuarios con permisos específicos, y conectarte de forma remota de manera segura.


Paso 1 — Habilitar el puerto 27017 en el Firewall

El puerto 27017 de MongoDB está cerrado por defecto. Creá una regla en el Firewall del Cloud Server para abrirlo — consultá Cloud & IaaS — Configurar el Firewall del Cloud Server.

Si no sabés desde qué IPs se conectará tu aplicación, podés usar 0.0.0.0/0 para permitir cualquier IP. Se recomienda especificar IPs concretas para mayor seguridad.


Paso 2 — Verificar la versión de MongoDB

Conectáte al servidor por SSH y ejecutá:

mongod --version

Conocer la versión es útil si vas a usar un cliente gráfico, ya que no todos tienen soporte para las últimas versiones.


Paso 3 — Crear un usuario administrador

Abrí MongoShell y creá un usuario con permisos de administración sobre cualquier base de datos:

mongo --port 27017

use admin

db.createUser(
{
user: "myServerAdmin",
pwd: "mipassword",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
);

Reemplazá myServerAdmin y mipassword con el usuario y contraseña que elijas.


Paso 4 — Restringir el acceso no autenticado

Por defecto MongoDB permite el acceso sin autenticación. Editá el archivo de configuración para requerirla:

mcedit /etc/mongod.conf

Quitá el comentario de la línea auth = true y guardá el archivo.

Luego reiniciá el servicio:

service mongod restart

A partir de ahora podés acceder a MongoShell autenticándote como administrador:

mongo --port 20017 -u myServerAdmin -p mipassword --authenticationDatabase admin

Paso 5 — Crear una base de datos y un usuario

En MongoDB las bases de datos se crean al insertar el primer contenido o al crear un usuario para las mismas. Para crear una base de datos llamada test con un usuario con permisos de lectura y escritura:

use test

db.createUser(
{
user: "myDbAdmin",
pwd: "mipassword",
roles: [ { role: "readWrite", db: "test" } ]
}
);

Para acceder a esa base de datos:

mongo --port 27017 -u myDbAdmin -p mipassword --authenticationDatabase test

Paso 6 — Insertar los primeros datos

use test

db.personal.save({nombre:'Ariel Perez',edad:23})
db.personal.save({nombre:'Diego Angel',edad:32})
db.personal.find()

El resultado muestra los documentos insertados con su _id generado automáticamente:

{ "_id" : ObjectId("55d87309d6b60ea1b22fb2ad"), "nombre" : "Ariel Perez", "edad" : 23 }
{ "_id" : ObjectId("55d87311d6b60ea1b22fb2ae"), "nombre" : "Diego Angel", "edad" : 32 }

Usar un cliente gráfico

Si preferís administrar MongoDB desde una interfaz gráfica, existen clientes gratuitos como Mongo Management Studio o MongoChef. La cadena de conexión sigue este formato:

mongodb://usuario:password@host:puerto/nombre_db

Por ejemplo:

mongodb://myDbAdmin:[email protected]:27017/test

¿Ha quedado contestada tu pregunta?