Bases de datos nosql

1. Gestión de Usuarios y Permisos

Por defecto, cuando instalamos MongoDB, cualquier persona puede conectarse sin autenticación. ¡Esto es peligroso! 😱

Para evitarlo, debemos crear usuarios con permisos específicos.

📌 Ejemplo: Crear un usuario administrador

1use admin
2db.createUser({
3  user: "admin",
4  pwd: "password123",
5  roles: [{ role: "userAdminAnyDatabase", db: "admin" }]
6})

✅ Ahora, solo este usuario puede administrar la base de datos.

📌 Ejemplo: Crear un usuario con acceso solo a una base de datos

1use tienda
2db.createUser({
3  user: "empleado",
4  pwd: "secreto",
5  roles: [{ role: "readWrite", db: "tienda" }]
6})

Este usuario solo puede leer y escribir en la base tienda.


2. Habilitar Autenticación en MongoDB

Para que MongoDB requiera usuario y contraseña, seguimos estos pasos:

1️⃣ Editamos el archivo de configuración de MongoDB (mongod.conf):

1sudo nano /etc/mongod.conf

2️⃣ Buscamos la sección security y agregamos:

1security:
2  authorization: enabled

3️⃣ Guardamos los cambios y reiniciamos MongoDB:

1sudo systemctl restart mongod

Ahora, para conectarnos, necesitamos ingresar el usuario y contraseña:

1mongo -u admin -p password123 --authenticationDatabase admin

¡Ahora MongoDB está protegido con autenticación! 🔒


3. Proteger MongoDB contra Ataques

📌 1. No permitir conexiones externas

Si tu base de datos solo se usa en el mismo servidor, limita las conexiones a localhost.

Editar mongod.conf y asegurarse de que dice:

1bindIp: 127.0.0.1

📌 2. Usar contraseñas seguras

Siempre usa contraseñas fuertes en los usuarios de la base de datos.

MAL: password123, admin123, 123456
BIEN: b4s3D4t0S*2024!

📌 3. Configurar Firewalls

Si MongoDB está en un servidor remoto, bloquea el acceso a su puerto (por defecto 27017).

En Linux (Ubuntu):

1sudo ufw deny 27017

Si necesitas acceso desde una IP específica, permítelo así:

1sudo ufw allow from 192.168.1.100 to any port 27017

Esto evita ataques de hackers en la nube.


4. Hacer Copias de Seguridad (Backups)

📌 Para hacer una copia de seguridad de la base de datos tienda:

1mongodump --db tienda --out /backup/

Esto genera una copia en la carpeta /backup/.

📌 Para restaurar la copia de seguridad en otra máquina:

1mongorestore --db tienda /backup/tienda/

Esto recupera toda la base de datos sin perder información.


5. Monitoreo y Administración

Es importante supervisar nuestra base de datos para detectar problemas.

📌 Ver el estado de la base de datos:

1db.serverStatus()

📌 Ver las conexiones activas:

1db.currentOp()

📌 Ver el uso de memoria y disco:

1db.stats()

Estos comandos ayudan a detectar si la base está sobrecargada.