sql >> Base de Datos >  >> NoSQL >> MongoDB

Arquitectura para la seguridad:una guía para MongoDB

La prevalencia de las filtraciones de datos ya no sorprende. Según el informe sobre delitos cibernéticos del FBI recién publicado, las víctimas de delitos cibernéticos han perdido acumuladamente la friolera de $ 4.2 mil millones en 2020, que es $ 700 millones más que las pérdidas reportadas en 2019. En particular, las bases de datos inseguras de MongoDB han sido parte del problema que conduce a importantes filtraciones de datos. . En febrero de 2019, una empresa de servicios de verificación de correo electrónico violó su base de datos MongoDB y expuso 763 millones de registros, incluidas direcciones de correo electrónico, números de teléfono, direcciones IP y fechas de nacimiento. El motivo es una instancia pública de MongoDB sin contraseña.

La falta de autenticación, la falta de restricción de puertos en el cortafuegos o la falta de seguridad de los datos en transmisión pueden provocar una filtración de datos. En este blog, discutiremos cómo preparar y proteger su base de datos MongoDB en un entorno de producción.

Autenticación y Autorización

La autenticación y la autorización son dos cosas diferentes, pero están correlacionadas. La autenticación significa que el usuario tiene acceso a la base de datos MongoDB, mientras que la autorización permite al usuario acceder al recurso dentro de la base de datos.

La instalación predeterminada para la autenticación en MongoDB está deshabilitada. MongoDB admite múltiples autenticaciones, por ejemplo:SCRAM, autenticación de certificado x.509. El predeterminado en MongoDB es SCRAM (Mecanismo de autenticación de respuesta de desafío salado), que verifica las credenciales de acceso proporcionadas con el nombre de usuario, la contraseña y la base de datos de autenticación.

Antes de habilitar la autenticación, cree un superusuario en MongoDB con el rol userAdminAnyDatabase. Después de que termine, solo necesitamos abrir el archivo /etc/mongod.conf y encontrar la sección sobre seguridad. El valor predeterminado está deshabilitado, solo necesitamos habilitarlo.

security:
    authorization: "disabled"

Reinicie el servicio MongoDB para aplicar los cambios de configuración. También podemos configurar RBAC (Control de acceso basado en roles) dentro de la base de datos MongoDB para una mejor seguridad relacionada con el usuario. Por lo tanto, segregamos el acceso a la base de datos según el usuario y los privilegios.

Segmentación de red

La segmentación de la red es un aspecto importante cuando diseñamos la arquitectura de la base de datos, se aplica a todas las bases de datos, no solo a MongoDB. Es una mejor práctica que segreguemos la red para la base de datos. Configuramos el servidor de la base de datos en una red privada, donde no se puede acceder desde Internet.

La comunicación con la base de datos ocurre en la red privada, y cuando el usuario quiere acceder a la base de datos, puede usar VPN o un jumphost. Además de la segmentación de la red, la restricción del puerto también juega un papel clave. Abrimos el puerto de la base de datos específico de la red segmentada para controlar el tráfico de red entrante y saliente. Entonces, sabemos que el tráfico entrante proviene de la dirección de origen confiable.

Cifrado de datos

Otra área que debemos analizar es el cifrado de datos. El cifrado de datos es un método en el que la información se codifica de otra forma durante la transmisión y se almacena en la base de datos.

Coberturas de cifrado de datos:

  • Datos en tránsito:datos en estado de transmisión 

  • Datos en reposo:datos almacenados en disco. Hay varios tipos de cifrado de datos en reposo, podemos usar el cifrado en el nivel de la base de datos o podemos usar el cifrado en la capa de almacenamiento.

La habilitación de SSL/TLS desde los clientes y el servidor MongoDB y entre los nodos MongoDB (en la arquitectura de conjunto de réplicas y de clúster fragmentado) protegerá los datos en tránsito. La transferencia de datos no será en texto sin formato.

Existen varias herramientas y funciones de cifrado para el cifrado de datos en reposo, por ejemplo; AWS proporciona cifrado de disco EBS combinado con KMS (Servicio de administración de claves) en el almacenamiento, mientras que en la capa de la base de datos, la edición Enterprise de MongoDB proporciona el cifrado de la base de datos en reposo.

Auditoría de base de datos

La implementación de una base de datos de auditoría para MongoDB brinda visibilidad de lo que se ejecuta dentro de la base de datos; por ejemplo:de qué usuario y qué comando ejecutó, y la fuente de la dirección IP. Podemos combinar esos registros y crear reglas basadas en el acceso autorizado. Podemos detectar si hay algún usuario no deseado ejecutando algún script en MongoDB. Podemos ver la sección auditLog.

auditLog:
   destination: syslog

Podemos enviar el registro de auditoría de MongoDB a los archivos syslog e insertar los registros en Administración de registros. ¿Quiere tener más consejos sobre cómo proteger MongoDB? Mire este video para comprender mejor las mejores prácticas para proteger su base de datos MongoDB

Conclusión

La implementación de estándares de seguridad para MongoDB es imprescindible, especialmente para un entorno de producción. No podemos aceptar cada pérdida y violación de los datos almacenados en la base de datos.