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

Cómo usar el cifrado para proteger los datos de MongoDB

Con muchos tipos de datos almacenados en la base de datos, a veces podemos tratar con datos confidenciales, que pueden incluir datos de tarjetas de crédito, registros financieros e información personal. Esos datos de PII (Información de identificación personal) están sujetos a regulaciones, por ejemplo:PCI DSS, HIPAA o GDPR, que debemos proteger y garantizar la confidencialidad, integridad y disponibilidad.

El cifrado de datos es parte de la arquitectura de MongoDB para la implementación de seguridad en entornos de producción. El objetivo del cifrado de datos es agregar más garantías para la seguridad de los datos, especialmente de las amenazas internas. Bloqueamos el servicio y los puertos de la base de datos, mantenemos una lista de control de acceso de quién puede acceder y realizar qué operaciones en la base de datos, y habilitamos el cifrado para proteger contra el rastreo durante la transmisión de la red o cuando se almacenan los datos. En este blog, discutiremos cómo usar el cifrado en MongoDB.

Cifrado de datos en tránsito

El cifrado de datos en tránsito garantiza que los datos de MongoDB estén protegidos entre los clientes (es decir, el servidor de aplicaciones) y el servidor de la base de datos y entre los servidores de la base de datos en la arquitectura MongoDB ReplicaSet o ShardedCluster. MongoDB utiliza certificados SSL/TLS, ya sea generados como certificados autofirmados o certificados emitidos por la autoridad de certificación.

La mejor manera es usar el certificado de una autoridad certificadora, porque permitirá que los controladores de MongoDB verifiquen el host con la autoridad certificadora, lo que significa que habrá una validación de la identidad del servidor para evitar la intervención -el-ataque medio. Aún puede utilizar el certificado autofirmado en una red de confianza.

El cifrado MongoDB SSL/TLS debe usar los cifrados TLS/SSL con una clave mínima de 128 bits. A partir de MongoDB versión 4.2 y superior, hay un nuevo parámetro llamado net.tls. Proporciona la misma funcionalidad que net.ssl. La configuración en el archivo mongod.conf como se muestra a continuación:

net:
   tls:
      mode: requireTLS
      certificateKeyFile: /etc/ssl/mongodb.pem

Mientras que si queremos agregar la validación del certificado del cliente, solo necesitamos agregar el parámetro CAFile de la siguiente manera:

      

net:
         tls:
            mode: requireTLS
            certificateKeyFile: /etc/ssl/mongodb.pem
            CAFile: /etc/ssl/caClientCert.pem

Con la configuración anterior, las conexiones MongoDB SSL/TLS requieren certificados válidos de los clientes y el cliente debe especificar la conexión SSL/TLS y presentar los archivos de clave de certificado.

 En la configuración anterior, usamos net.tls que existe en MongoDB 4.2. Para la versión anterior, podemos usar la configuración de net.ssl ​​como se muestra a continuación:

net:
   ssl:
      mode: requireSSL
      PEMKeyFile: /etc/ssl/mongodb.pem

Y agregar Validación de certificado de cliente es similar a la configuración de net.tls. Simplemente agregue el parámetro CAFile como se muestra a continuación:

net:
   ssl:
      mode: requireSSL
      PEMKeyFile: /etc/ssl/mongodb.pem
      CAFile: /etc/ssl/caClientCert.pem

Cifrado de datos en reposo

Hablando sobre el cifrado de datos en reposo, existen varios métodos de cifrado de datos MongoDB que son: 

  • Cifrado del motor de almacenamiento de base de datos

MongoDB proporciona cifrado nativo en el motor de almacenamiento WiredTiger. El cifrado del resto de datos requiere la protección de dos claves para los datos, que son la clave maestra utilizada para cifrar los datos y la clave maestra utilizada para cifrar las claves de la base de datos. El cifrado utiliza el estándar de cifrado avanzado AES256-CBC. Utiliza claves asimétricas, que es la misma clave para cifrar y descifrar los datos. Está disponible solo en Enterprise Edition a partir de la versión 3.2 y superior.

Percona Server para MongoDB tiene cifrado de datos en reposo que viene como parte del servidor de código abierto, introducido a partir de la versión 3.6. La versión actual no incluye el Protocolo de interoperabilidad de administración de claves (KMIP) ni Amazon KMS. Podemos usar un archivo de claves local o un servidor de administración de claves de terceros, como Hashicorp Vault.

El parámetro en Percona Server para MongoDB relacionado con el cifrado es encryptionCipherMode que podemos configurar eligiendo uno de los siguientes modos de cifrado:

  • AES256-CBC

  • AES256-GCM

El cifrado predeterminado es AES256-CBC si no aplicó explícitamente uno de los anteriores. Podemos habilitar el cifrado de datos en reposo en la nueva instalación de Percona Server para MongoDB, pero no es compatible con los servicios de MongoDB existentes.

  • Cifrado de disco/almacenamiento

El cifrado de almacenamiento es el cifrado de los medios de almacenamiento. Podemos usar el cifrado de disco basado en Linux, como LUKS, para cifrar el volumen de datos del disco, o si usamos un entorno de nube, puede haber una opción de cifrado. Por ejemplo, en AWS es posible tener almacenamiento en bloque cifrado, así como almacenamiento S3.

  • Cifrado basado en API

El cifrado basado en API utiliza un software de cifrado de terceros o la aplicación proporciona un algoritmo para cifrar los datos antes de que se almacenen en la base de datos de MongoDB. La capa de aplicación maneja todo el proceso.