MongoDB Seguridad, monitoreo y respaldo (Mongodump)
Uno de los conceptos claves en MongoDB es la gestión de bases de datos. Aspectos importantes como la seguridad, las copias de seguridad y el acceso a las bases de datos son conceptos importantes cuando se trata de la administración de bases de datos.
MongoDB Descripción general de seguridad
MongoDB Tiene la capacidad de definir mecanismos de seguridad a las bases de datos. Por defecto, uno no querría que todos tuvieran acceso abierto a todas las bases de datos en MongoDB, de ahí la necesidad de contar con algún tipo de mecanismo de seguridad en MongoDB es importante.
A continuación se presentan las mejores prácticas al implementar la seguridad en las bases de datos.
- Habilitar control de acceso: cree usuarios para que todas las aplicaciones y usuarios tengan algún tipo de mecanismo de autenticación al acceder a bases de datos en MongoDB.
- Configurar el control de acceso basado en roles: a veces puede haber una agrupación lógica de permisos que pueden ser necesarios, que pueden agruparse en roles. Luego se pueden asignar usuarios a estos roles.
- Intenta configurar MongoDB utilizar algún tipo de protocolo de cifrado como TLS o SSL. Estos protocolos se pueden utilizar para cifrar el tráfico que fluye entre el cliente y el entorno de base de datos mongo.
- Configurar la auditoría: los administradores normalmente necesitan saber quién hace qué, lo que ayuda a analizar los problemas más adelante. La mejor manera es habilitar la auditoría en MongoDB.
- Ejecute la instancia del servidor MongDB con una identificación de usuario separada que tenga acceso a los recursos necesarios en el entorno del servidor.
Procedimientos de copia de seguridad de Mongodb – mongodump
Cuando se trabaja con MongDB, es importante asegurarse siempre de que exista un procedimiento de copia de seguridad en caso de que los datos dentro MongoDB se corrompe por cualquier motivo.
A continuación se muestran los mecanismos de respaldo disponibles desde dentro. MongoDB
- Copia de seguridad copiando archivos de datos subyacentes – Este es probablemente el mecanismo más sencillo, todo lo que hay que hacer es copiar los archivos de datos en los que MongoDB reside y cópielo en otra ubicación que idealmente debería ser otro servidor.
- Copia de seguridad de una base de datos con mongodump – La herramienta mongodump lee datos de un MongoDB base de datos y crea archivos BSON de alta fidelidad. Lo que hay que tener en cuenta es que si el conjunto de datos es de gran volumen, entonces mongodump puede consumir muchos recursos, por lo que, para mitigar este problema, la utilidad debe ejecutarse en un servidor secundario.
- MongoDB Copia de seguridad del administrador de la nube – MongoDB Cloud Manager realiza copias de seguridad continuamente MongoDB conjuntos de réplicas y clústeres fragmentados leyendo los datos del registro de operaciones del MongoDB ambiente. MongoDB Cloud Manager puede crear una recuperación en un momento determinado almacenando datos de registro de operaciones para poder crear una restauración en cualquier momento para un conjunto de réplicas o un clúster fragmentado en particular.
Monitoreo de MongoDB
El monitoreo es una de las actividades administrativas más críticas en MongoDB. Esto se debe a que puede ser más proactivo al monitorear el entorno para detectar posibles problemas que puedan surgir.
A continuación se muestran algunos de los ejemplos para implementar el monitoreo.
- mongostato le dirá cuántas veces las operaciones de la base de datos, como insertar, consultar, actualizar, eliminar, etc., ocurren realmente en el servidor. Esto le dará una buena idea de cuánta carga está manejando el servidor e indicará si necesita recursos adicionales en el servidor o tal vez servidores adicionales para distribuir la carga.
- mongotop rastrea e informa la actividad actual de lectura y escritura de un MongoDB por ejemplo, y reporta estas estadísticas por colección.
- MongoDB proporciona una interfaz web que expone información de diagnóstico y monitoreo en una página web simple. Puede navegar a la siguiente URL en su servidor local para abrir la utilidad de administración web.
http://localhost:28017
- El comando serverStatus, o db.serverStatus() desde el shell, devuelve una descripción general del estado de la base de datos, con detalles sobre el uso del disco, el uso de la memoria y las conexiones establecidas a la base de datos. MongoDB ambiente, etc
MongoDB Consideraciones de indexación y rendimiento
- Los índices son muy importantes en cualquier base de datos y se pueden utilizar para mejorar la eficiencia de las consultas de búsqueda en MongoDB. Si realiza búsquedas continuamente en su documento, entonces es mejor agregar índices en los campos del documento que se utilizan en los criterios de búsqueda.
- Intente limitar siempre la cantidad de resultados de consulta devueltos. Supongamos que tiene 2 nombres de campos en un documento, pero solo desea ver 2 campos del documento. Luego, asegúrese de que su consulta solo tenga como objetivo mostrar los 2 campos que necesita y no todos los campos.
- Si desea ver ciertos valores de campo, utilice solo esos campos en la consulta. No consulte todos los campos de la colección si no son obligatorios.
Configurar MongoDB con autenticación Kerberos
Mientras que la autorización busca garantizar el acceso del cliente al sistema, la autenticación verifica qué tipo de acceso tiene el cliente. MongoDB, una vez que hayan sido autorizados en el sistema.
Existen varios mecanismos de autenticación, a continuación se detallan solo algunos de ellos.
MongoDB Autenticación mediante certificados x.509
Utilice certificados x.509 para autenticar al cliente: un certificado es básicamente una firma confiable entre el cliente y el MongoDB Server.
Entonces, en lugar de ingresar un nombre de usuario y contraseña para conectarse al servidor, se pasa un certificado entre el cliente y el MongoDB Servidor. Básicamente, el cliente tendrá un certificado de cliente que se pasará al servidor para autenticarse en el servidor. Cada certificado de cliente corresponde a un único MongoDB usuario. Entonces cada usuario de MongoDB debe tener su propio certificado para autenticarse ante el MongoDB servidor.
Para garantizar que esto funcione, se deben seguir los siguientes pasos:
- Se debe comprar un certificado válido de una autoridad externa válida e instalarlo en el MongoDB Server.
- El certificado de cliente debe tener las siguientes propiedades (una única autoridad de certificación (CA) debe emitir los certificados tanto para el cliente como para el servidor. Los certificados de cliente deben contener los siguientes campos: keyUsage y extendedKeyUsage.
- Cada usuario que se conecta al servidor MongDB debe tener un certificado independiente.
Cómo configurar MongoDB con autenticación Kerberos
A continuación se detallan los pasos para configurar MongoDB con autenticación Kerberos activada Windows:
Paso 1) Configurar MongoDB con autenticación Kerberos activada Windows
Kerberos es un mecanismo de autenticación utilizado en grandes entornos cliente-servidor.
Es un mecanismo muy seguro en el que la contraseña sólo se permite si está cifrada. Bien, MongoDB tiene la posibilidad de autenticarse contra un sistema existente basado en Kerberos.
Paso 2) proceso del servidor mongod.exe
A continuación, inicie el proceso del servidor mongod.exe.
Paso 3) proceso del cliente mongo.exe y conexión
A continuación, inicie el proceso del cliente mongo.exe y conéctese al MongoDB servidor.
Paso 4) Agregar un usuario en MongoDB
Que es básicamente un nombre principal de Kerberos para la base de datos $external. La base de datos $external es una base de datos especial que indica MongoDB para autenticar a este usuario en un sistema Kerberos en lugar de en su propio sistema interno.
use $external db.createUser( { user: "user1@example.NET", roles:[ { role: "read" , db:"Marketing"} } ] }
Paso 5) Comience a usar el comando
Inicie mongod.exe con soporte Kerberos usando el siguiente comando
mongod.exe –auth –setParameter authenticationMechanisms=GSSAPI
Y ahora puede conectarse con el usuario de Kerberos y la autenticación Kerberos a la base de datos.
Resum
- Es muy importante implementar seguridad en las bases de datos para garantizar que los datos de la base de datos se mantengan seguros.
- Los usuarios se pueden crear en la base de datos con el comando createUser. Se pueden asignar roles específicos a los usuarios para otorgarles permisos específicos en la propia base de datos.
- Se pueden agregar administradores para todas las bases de datos, solo para bases de datos específicas. Esto se logra otorgando el rol userAdmin o userAdminAnyDatabase.
- Siempre haga una copia de seguridad de su MongoDB entorno para que, en caso de cualquier desastre, los datos sean fácilmente recuperables.
- Supervise siempre su MongoDB ambiente para ser más proactivo y ver los problemas antes de que ocurran.
- Existen varios mecanismos de autenticación para brindar una mejor seguridad en las bases de datos. Un ejemplo es el uso de certificados para autenticar usuarios en lugar de utilizar nombres de usuario y contraseñas.