Cifrado en reposo y TLS en tránsito
Active TLS para las conexiones de los clientes y conozca el cifrado en reposo de WiredTiger y el almacenamiento cifrado integrado de Atlas.
Cifrado en reposo y TLS en tránsito es una lección gratuita de MongoDB Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de MongoDB Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de MongoDB Academy incluye 4 lecciones en total.
Dos capas de cifrado de bases de datos
Proteger los datos de MongoDB requiere protección en dos puntos distintos: cifrado en tránsito (datos que se desplazan entre los clientes y MongoDB, o entre los miembros de un conjunto de réplicas) y cifrado en reposo (datos almacenados en disco). La autenticación controla quién puede conectarse, pero incluso un usuario autenticado que opere mediante una conexión sin cifrar expone sus credenciales y consultas a la interceptación de red. Juntos, TLS y el cifrado en reposo proporcionan una defensa en profundidad.
TLS: cifrado de datos en tránsito
TLS (Transport Layer Security) cifra el canal de red entre los clientes de MongoDB, los controladores y las instancias mongod/mongos. Habilitar TLS evita las escuchas y los ataques de intermediario en la red. MongoDB 4.2 y versiones posteriores solo admiten TLS 1.1 y superiores, y TLS 1.3 está disponible en plataformas modernas. Use siempre TLS en cualquier entorno donde el tráfico de red pueda ser interceptado, incluidos los VPC en la nube a pesar del aislamiento a nivel de VPC.
Configuración de TLS en mongod.conf
TLS se configura en la sección net.tls de mongod.conf. Establezca mode: requireTLS para rechazar todas las conexiones sin cifrar. Debe proporcionar un archivo PEM que contenga el certificado y la clave privada del servidor. Opcionalmente, proporcione un CAFile para exigir que los clientes presenten certificados firmados por su CA (TLS mutuo).
# mongod.conf — require TLS for all connections
net:
port: 27017
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/mongodb-server.pem
CAFile: /etc/ssl/ca.pem # optional: require client certs
disabledProtocols: TLS1_0,TLS1_1 # enforce TLS 1.2+Conexión con TLS en el controlador de Node.js
El controlador oficial de MongoDB para Node.js habilita TLS cuando la URI de conexión utiliza mongodb+srv:// (Atlas siempre utiliza TLS) o cuando se establece la opción tls: true. En implementaciones autogestionadas, puede ser necesario proporcionar la ruta al archivo de la CA para que el controlador pueda verificar el certificado del servidor. Use variables de entorno para las rutas de los certificados, de modo que no queden codificadas directamente en el código fuente.
const { MongoClient } = require('mongodb')
// Self-hosted MongoDB with TLS
const client = new MongoClient('mongodb://myUser:myPass@dbhost:27017', {
tls: true,
tlsCAFile: process.env.MONGO_TLS_CA_FILE,
// For mutual TLS (client certificate):
// tlsCertificateKeyFile: process.env.MONGO_TLS_CERT_FILE
})
await client.connect()
// Atlas — TLS is enabled by default via SRV record
const atlasClient = new MongoClient(process.env.ATLAS_CONNECTION_STRING)Modos TLS: disabled, allowTLS, preferTLS, requireTLS
MongoDB ofrece cuatro modos TLS durante las fases de migración. disabled solo acepta conexiones sin cifrar (únicamente para desarrollo). allowTLS acepta conexiones TLS y sin cifrar (por compatibilidad con versiones anteriores). preferTLS utiliza TLS de forma predeterminada, pero acepta conexiones sin cifrar. requireTLS rechaza todas las conexiones que no usan TLS y es el único modo aceptable para implementaciones en producción.
# Migration path: gradually enforce TLS
# Step 1: allowTLS (accept both)
# Step 2: preferTLS (default TLS, allow plain)
# Step 3: requireTLS (reject plain) <- production target
net:
tls:
mode: requireTLSCifrado en reposo: WiredTiger
El motor de almacenamiento predeterminado de MongoDB, WiredTiger, admite Encrypted Storage Engine (disponible en MongoDB Enterprise). Cifra los archivos de datos del disco mediante AES-256-CBC o AES-256-GCM. Aunque un atacante obtenga acceso al disco físico o a una instantánea del disco, no podrá leer los datos sin la clave de cifrado. Esto satisface requisitos de cumplimiento como GDPR, HIPAA y PCI-DSS, que exigen proteger los datos en reposo.
# mongod.conf — WiredTiger encryption at rest (Enterprise only)
security:
enableEncryption: true
encryptionKeyFile: /etc/mongodb/encryption-key # AES-256 key
# Or use KMIP key management:
security:
enableEncryption: true
kmip:
serverName: kmip.example.com
port: 5696
clientCertificateFile: /etc/ssl/kmip-client.pemCifrado en reposo en Atlas
MongoDB Atlas proporciona cifrado en reposo mediante la gestión de claves del proveedor de nube: AWS KMS, Azure Key Vault o Google Cloud KMS. Los clientes pueden aportar su propia Customer Master Key (CMK), lo que les da control total; si elimina su CMK, Atlas no podrá descifrar sus datos. El cifrado en reposo de Atlas se habilita por proyecto en la configuración de seguridad y se aplica a todos los clústeres de ese proyecto.
Prácticas recomendadas para la gestión de claves
El cifrado solo es tan sólido como la seguridad de sus claves. Siga estas prácticas recomendadas para la gestión de claves: almacene las claves de cifrado en un servicio de gestión de claves (KMS) dedicado, en lugar de hacerlo en el mismo servidor que la base de datos; rote las claves de cifrado con regularidad (MongoDB admite la rotación de claves sin volver a cifrar todos los datos); use claves independientes para desarrollo, staging y producción; y habilite los registros de auditoría de KMS para realizar un seguimiento de todos los eventos de acceso a las claves.
Rotación de certificados TLS sin tiempo de inactividad
Los certificados TLS caducan, normalmente después de 1–2 años. MongoDB admite la rotación de certificados en línea: puede implementar un nuevo archivo PEM y enviar el comando rotateCertificates a mongod, que utilizará el nuevo certificado para todas las conexiones nuevas sin reiniciar el proceso. Planifique la renovación del certificado al menos 30 días antes de su caducidad para evitar imprevistos de última hora y caídas en producción.
// Trigger online certificate rotation (mongosh)
db.adminCommand({ rotateCertificates: 1 })
// MongoDB reloads the certificate file specified in mongod.conf
// without dropping existing connectionsSeguridad a nivel de red: listas de IP permitidas y VPC
TLS y el cifrado en reposo protegen los datos en tránsito y en disco, pero los controles a nivel de red añaden otra capa. En MongoDB Atlas, use entradas de IP Access List para incluir en la lista de permitidos únicamente los servidores de su aplicación y las IP de los desarrolladores. En producción, use VPC Peering o AWS PrivateLink para que el tráfico entre su aplicación y Atlas nunca atraviese la Internet pública, eliminando una gran clase de ataques basados en la red incluso antes de tener en cuenta TLS.
Auditoría de conexiones cifradas
Una vez habilitado TLS, verifique que todas las conexiones estén cifradas comprobando connPoolStats o el registro de conexiones de MongoDB. MongoDB registra los fallos del handshake de TLS, lo que le permite identificar cualquier cliente antiguo que aún intente establecer conexiones sin cifrar. En Atlas, la pestaña Monitoring muestra las conexiones activas y su estado de TLS, por lo que resulta sencillo confirmar la aplicación completa antes de eliminar el modo allowTLS.
// Check current connections (mongosh)
db.adminCommand({ currentOp: true }).inprog
.filter(op => op.client)
.map(op => ({ client: op.client, tls: op.clientMetadata }))
// Server status — TLS stats
db.serverStatus().network.serviceExecutorTaskStatsComprobación rápida
Compruebe su comprensión de los conceptos de MongoDB y las bases de datos NoSQL de esta lección.
Resumen de la lección
En esta lección ha aprendido lo siguiente: requireTLS en mongod.conf impone conexiones de clientes cifradas y debe ser el único modo utilizado en producción; WiredTiger Encrypted Storage Engine protege los archivos de datos en disco (Enterprise), mientras que Atlas proporciona cifrado en la nube basado en CMK; y los controles a nivel de red, como las listas de IP permitidas y el emparejamiento de VPC, añaden capas de protección más allá de TLS. A continuación veremos Client-Side Field Level Encryption.
Aprende JavaScript con un tutor de IA — gratis
Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.
- Cursos
- 30
- Lecciones
- 120
Preguntas frecuentes
¿La lección «Cifrado en reposo y TLS en tránsito» es gratis?
Sí — el texto completo de «Cifrado en reposo y TLS en tránsito» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de MongoDB Academy, actualiza a CoddyKit PRO. El curso de MongoDB Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Cifrado en reposo y TLS en tránsito»?
Active TLS para las conexiones de los clientes y conozca el cifrado en reposo de WiredTiger y el almacenamiento cifrado integrado de Atlas. Practicas MongoDB Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar MongoDB Academy?
No se requiere experiencia previa. MongoDB Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Cifrado en reposo y TLS en tránsito»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de MongoDB Academy?
Sí. Cada lección de MongoDB Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Mecanismos de autenticación: SCRAM y x.509
- Control de acceso basado en roles: roles integrados y personalizados
- Cifrado en reposo y TLS en tránsito
- Cifrado a nivel de campo del lado del cliente