Seguridad en MongoDB
Fuente de imagen: mongodb.org
Por defecto MongoDB no viene con demasiadas medidas de seguridad y según la función que tenga dentro tu arquitectura así como su situación en la infraestructura puede ser necesario implantar ciertas medidas básicas de seguridad.
Consideramos que los siguientes parámetros pueden ser útiles para la mayoría de instalaciones y se configuran en el fichero de configuración principal (/etc/mongod.conf o el que hayas configurado para tu instalación).
security: authorization: “enabled” net: bindIp: 127.0.0.1 port: 27019 (el que desees) http: enabled: false RESTInterfaceEnabled: false
Básicamente se activan:
- La autenticación de usuarios
- Sólo se permiten conexiones desde la ip indicada (en este caso la ip local)
- Se cambia el puerto por defecto al que deseemos
- Se deshabilita cualquier acceso vía http tanto a la parte de administración como a la API Rest.
Lo siguiente sería crear los usuarios con acceso a la base de datos (colección) que deseemos.
Los pasos a seguir serían:
- Crear usuario admin con el role “root” en la bd admin
- Crear usuario ejemplo con el role “dwOwner” en la bd ejemplo
- Modificar el fichero .config con la configuración propuesta
- Reiniciar el servicio de Mongo
$ use admin switched to db admin > db.createUser({user: "admin", pwd: "passwordapruebadebombas", roles: ["root"]}) Successfully added user: { "user" : "admin", "roles" : [ "root" ] } $ use ejemplo switched to db ejemplo $ db.createUser({user: "ejemplo", pwd: "passworddelaleche", roles: ["dbOwner"]}) Successfully added user: { "user" : "ejemplo", "roles" : [ "dbOwner" ] }
Recordad que estos son unas directivas básicas de seguridad que deben ser complementadas con una correcta configuración de:
- Firewall
- Auditoría de logs
- Política de backups
- Shared key para configuración de replica sets
- Activar tráfico SSL entre el cliente y el servidor MongoDB