MongoDB Academy · Aula

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.

Aula 3 de 413 etapas

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: requireTLS

Criptografia 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.pem

Criptografia 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 connections

Seguranç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.serviceExecutorTaskStats

Verificaçã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.

Grátis para começar

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

  1. Mecanismos de autenticação: SCRAM e x.509
  2. Controle de acesso baseado em funções: funções integradas e personalizadas
  3. Criptografia em repouso e TLS em trânsito
  4. Criptografia em nível de campo no lado do cliente
← Voltar para MongoDB Academy