Criptografia em repouso e TLS em trânsito
Os alunos habilitarão TLS para conexões de clientes e conhecerão a criptografia em repouso do WiredTiger e o armazenamento criptografado integrado do Atlas.
Criptografia em repouso e TLS em trânsito é uma aula grátis de MongoDB Academy no CoddyKit. Esta é a aula 3 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de MongoDB Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de MongoDB Academy inclui 4 aulas no total.
Duas camadas de criptografia de banco de dados
Proteger os dados do MongoDB exige proteção em dois pontos distintos: criptografia em trânsito (dados que se movem entre clientes e o MongoDB ou entre membros de um conjunto de réplicas) e criptografia em repouso (dados armazenados no disco). A autenticação controla quem pode se conectar, mas até mesmo um usuário autenticado operando por uma conexão não criptografada expõe credenciais e consultas à interceptação de rede. Juntos, o TLS e a criptografia em repouso fornecem defesa em profundidade.
TLS: criptografando dados em trânsito
TLS (Transport Layer Security) criptografa o canal de rede entre clientes do MongoDB, controladores e instâncias mongod/mongos. Ativar o TLS impede a espionagem e os ataques do tipo intermediário durante a transmissão. O MongoDB 4.2 ou posterior oferece suporte somente ao TLS 1.1 e versões posteriores, com TLS 1.3 disponível em plataformas modernas. Use sempre o TLS em qualquer ambiente em que o tráfego de rede possa ser interceptado — isso inclui VPCs na nuvem, apesar do isolamento no nível da VPC.
Configurando o TLS em mongod.conf
O TLS é configurado na seção net.tls do arquivo mongod.conf. Defina mode: requireTLS para rejeitar todas as conexões não criptografadas. É necessário fornecer um arquivo PEM contendo o certificado e a chave privada do servidor. Opcionalmente, forneça um CAFile para exigir que os clientes apresentem certificados assinados pela sua CA (TLS mútuo).
# 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+Conectando-se com TLS no controlador Node.js
O controlador oficial do MongoDB para Node.js habilita o TLS quando o URI de conexão usa mongodb+srv:// (o Atlas sempre usa TLS) ou quando a opção tls: true é definida. Em implantações auto-hospedadas, talvez seja necessário fornecer o caminho do arquivo da CA para que o controlador possa verificar o certificado do servidor. Use variáveis de ambiente para os caminhos dos certificados, para que eles não sejam codificados diretamente no código-fonte.
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 de TLS: disabled, allowTLS, preferTLS, requireTLS
O MongoDB oferece quatro modos de TLS durante as fases de migração. disabled aceita apenas conexões sem TLS (somente para desenvolvimento). allowTLS aceita conexões com TLS e sem TLS (para compatibilidade com versões anteriores). preferTLS usa TLS por padrão, mas aceita conexões não criptografadas. requireTLS rejeita todas as conexões sem TLS e é o único modo aceitável em implantações de produção.
# 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: requireTLSCriptografia em repouso: WiredTiger
O mecanismo de armazenamento padrão do MongoDB, WiredTiger, é compatível com o mecanismo de armazenamento criptografado (disponível no MongoDB Enterprise). Ele criptografa os arquivos de dados no disco usando AES-256-CBC ou AES-256-GCM. Mesmo que um invasor obtenha acesso ao disco físico ou a um instantâneo do disco, não poderá ler os dados sem a chave de criptografia. Isso atende a requisitos de conformidade, como GDPR, HIPAA e PCI-DSS, que determinam a proteção de dados em repouso.
# 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.pemCriptografia em repouso no Atlas
O MongoDB Atlas oferece criptografia em repouso usando o gerenciamento de chaves do provedor de nuvem: AWS KMS, Azure Key Vault ou Google Cloud KMS. Os clientes podem trazer sua própria Customer Master Key (CMK), obtendo controle total — se você excluir sua CMK, o Atlas não poderá descriptografar seus dados. A criptografia em repouso do Atlas é habilitada por projeto nas configurações de segurança e se aplica a todos os clusters desse projeto.
Práticas recomendadas para o gerenciamento de chaves
A criptografia só é tão forte quanto a segurança de suas chaves. Siga estas práticas recomendadas para o gerenciamento de chaves: armazene as chaves de criptografia em um serviço dedicado de gerenciamento de chaves (KMS), em vez de armazená-las no mesmo servidor que o banco de dados; alterne as chaves de criptografia regularmente (o MongoDB permite alternar as chaves sem criptografar novamente todos os dados); use chaves separadas para desenvolvimento, preparação e produção; e habilite os registros de auditoria do KMS para acompanhar todos os eventos de acesso às chaves.
Alternância de certificados TLS sem indisponibilidade
Os certificados TLS expiram, normalmente após 1–2 anos. O MongoDB permite a alternância de certificados online: você pode implantar um novo arquivo PEM e enviar o comando rotateCertificates ao mongod, que usará o novo certificado para todas as novas conexões sem reiniciar o processo. Planeje a renovação do certificado pelo menos 30 dias antes da expiração para evitar correria de última hora e indisponibilidade em produção.
// Trigger online certificate rotation (mongosh)
db.adminCommand({ rotateCertificates: 1 })
// MongoDB reloads the certificate file specified in mongod.conf
// without dropping existing connectionsSegurança no nível da rede: lista de permissões de IP e VPC
O TLS e a criptografia em repouso protegem os dados em trânsito e no disco, mas os controles no nível da rede acrescentam outra camada. No MongoDB Atlas, use entradas da lista de acesso de IP para permitir somente os servidores da sua aplicação e os IPs dos desenvolvedores. Em produção, use emparelhamento de VPC ou AWS PrivateLink para que o tráfego entre sua aplicação e o Atlas nunca atravesse a internet pública, eliminando uma grande categoria de ataques baseados em rede antes mesmo que o TLS seja considerado.
Auditoria de conexões criptografadas
Depois de habilitar o TLS, verifique se todas as conexões estão criptografadas consultando connPoolStats ou o registro de conexões do MongoDB. O MongoDB registra falhas no handshake TLS, permitindo identificar qualquer cliente antigo que ainda esteja tentando estabelecer conexões em texto simples. No Atlas, a aba Monitoramento mostra as conexões ativas e o status do TLS, facilitando a confirmação da aplicação completa da política antes de remover o 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.serviceExecutorTaskStatsVerificação rápida
Teste sua compreensão dos conceitos de MongoDB e bancos de dados NoSQL desta lição.
Recapitulação da lição
Nesta lição, você aprendeu que requireTLS em mongod.conf impõe conexões criptografadas dos clientes e deve ser o único modo usado em produção; o mecanismo de armazenamento criptografado WiredTiger protege os arquivos de dados no disco (Enterprise), enquanto o Atlas oferece criptografia na nuvem baseada em CMK; e controles no nível da rede, como listas de permissões de IP e emparelhamento de VPC, acrescentam camadas de proteção além do TLS. A seguir, abordaremos a criptografia de campos no lado do cliente.
Aprenda JavaScript com um tutor de IA — grátis
Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.
- Cursos
- 30
- Aulas
- 120
Perguntas Frequentes
A aula “Criptografia em repouso e TLS em trânsito” é grátis?
Sim — o texto completo de “Criptografia em repouso e TLS em trânsito” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de MongoDB Academy, atualize para CoddyKit PRO. O curso de MongoDB Academy inclui 4 aulas no total.
O que vou aprender em “Criptografia em repouso e TLS em trânsito”?
Os alunos habilitarão TLS para conexões de clientes e conhecerão a criptografia em repouso do WiredTiger e o armazenamento criptografado integrado do Atlas. Você pratica MongoDB Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar MongoDB Academy?
Nenhuma experiência prévia é necessária. MongoDB Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 3 de 4.
Quanto tempo leva a aula “Criptografia em repouso e TLS em trânsito”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de MongoDB Academy?
Sim. Cada aula de MongoDB Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Mecanismos de autenticação: SCRAM e x.509
- Controle de acesso baseado em funções: funções integradas e personalizadas
- Criptografia em repouso e TLS em trânsito
- Criptografia em nível de campo no lado do cliente