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.