Mecanismos de autenticação: SCRAM e x.509
Os alunos habilitarão a autenticação SCRAM-SHA-256, criarão usuários do banco de dados e configurarão a autenticação baseada em certificados x.509 para a autenticação interna do cluster.
Mecanismos de autenticação: SCRAM e x.509 é uma aula grátis de MongoDB Academy no CoddyKit. Esta é a aula 1 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.
Por que a autenticação é fundamental
Por padrão, uma instância do MongoDB recém-instalada escuta em 0.0.0.0:27017 sem exigir autenticação. Inúmeras violações de segurança no mundo real ocorreram porque desenvolvedores deixaram o MongoDB exposto à internet sem ativar a autenticação. As implantações de produção devem sempre habilitar a autenticação, para que somente usuários e serviços com credenciais possam se conectar. O MongoDB oferece vários mecanismos de autenticação — os dois mais importantes são SCRAM e certificados x.509.
Habilitação da autenticação no mongod
A autenticação é ativada adicionando security.authorization: enabled ao arquivo de configuração mongod.conf (ou passando --auth na linha de comando). Depois de ativada, toda tentativa de conexão deve fornecer credenciais válidas. Antes de ativar a autenticação em uma implantação existente, crie sempre um usuário administrador primeiro — caso contrário, você ficará sem acesso.
# mongod.conf snippet
security:
authorization: enabled
# Or start mongod with --auth flag
# mongod --auth --dbpath /data/dbCriando o primeiro usuário administrador
Conecte-se ao MongoDB sem autenticação enquanto ele ainda estiver no modo não autenticado (ou no modo de exceção do localhost) para criar o primeiro usuário. Conceda a ele a função userAdminAnyDatabase para que possa criar usuários adicionais. Em seguida, ative --auth e reconecte-se usando credenciais. A exceção do localhost permite uma conexão não autenticada pelo localhost somente até que o primeiro usuário seja criado.
// Connect without auth, create admin user first
use admin
db.createUser({
user: 'adminUser',
pwd: 'StrongPassword123!',
roles: [
{ role: 'userAdminAnyDatabase', db: 'admin' },
{ role: 'readWriteAnyDatabase', db: 'admin' }
]
})
// Reconnect with auth
// mongosh 'mongodb://adminUser:StrongPassword123!@localhost:27017'SCRAM: o mecanismo de autenticação padrão
SCRAM (Salted Challenge Response Authentication Mechanism) é o protocolo de autenticação padrão do MongoDB baseado em senha. Por padrão, o MongoDB usa SCRAM-SHA-256 (a variante mais recente e mais robusta). O SCRAM evita enviar a senha real pela rede — o cliente e o servidor realizam uma negociação criptográfica usando hashes com salt. Os clientes negociam automaticamente a variante SCRAM mais robusta compatível com o servidor.
// Explicitly connect with SCRAM in Node.js
const { MongoClient } = require('mongodb')
const client = new MongoClient(
'mongodb://myUser:myPassword@localhost:27017/mydb?authSource=admin',
{ authMechanism: 'SCRAM-SHA-256' } // default, usually omitted
)
await client.connect()Criando usuários de aplicação com privilégio mínimo
Cada serviço de aplicação deve ter seu próprio usuário do MongoDB, com apenas as permissões necessárias. Um serviço de relatórios somente leitura deve ter apenas a função read no banco de dados específico. Uma API com muitas operações de escrita deve ter apenas readWrite. Conceder root ou dbOwner a contas de aplicação viola o princípio do privilégio mínimo e amplia o impacto de uma invasão.
// Read-only reporting user
use myApp
db.createUser({
user: 'reportingSvc',
pwd: 'SecurePass!456',
roles: [{ role: 'read', db: 'myApp' }]
})
// API service user with read/write access
db.createUser({
user: 'apiSvc',
pwd: 'AnotherPass!789',
roles: [{ role: 'readWrite', db: 'myApp' }]
})Autenticação baseada em certificados x.509
Certificados x.509 fornecem uma autenticação mais robusta que as senhas ao usar pares de chaves criptográficas. O cliente apresenta um certificado assinado por uma Autoridade Certificadora confiável (CA), em vez de um nome de usuário e uma senha. O MongoDB associa o Nome Distinto do Subject (DN) do certificado a um usuário do MongoDB. Esse é o mecanismo preferencial para a autenticação interna de membros do cluster (nós do conjunto de réplicas que se autenticam entre si).
Configurando x.509 em mongod.conf
Para ativar x.509, você deve configurar o TLS (o transporte subjacente) e definir security.clusterAuthMode: x509 para a autenticação entre os membros do cluster. Para a autenticação de clientes, defina net.tls.CAFile como o certificado da sua CA para que o MongoDB possa verificar os certificados dos clientes. Isso exige gerar uma CA, assinar certificados para cada membro e cliente e distribuí-los com segurança.
# mongod.conf for x.509 client + cluster auth
net:
tls:
mode: requireTLS
certificateKeyFile: /etc/ssl/server.pem
CAFile: /etc/ssl/ca.pem
security:
authorization: enabled
clusterAuthMode: x509Criando um usuário associado a um certificado x.509
Ao usar a autenticação de clientes x.509, o nome de usuário do MongoDB deve corresponder exatamente ao DN do Subject do certificado do cliente. Crie o usuário no banco de dados $external (não no banco de dados regular admin ou no banco da aplicação), pois as credenciais são validadas externamente pelo certificado, e não pelo repositório interno de credenciais do MongoDB.
// Create user mapped to certificate Subject DN
use $external
db.createUser({
user: 'CN=apiService,OU=services,O=MyCompany,L=Istanbul,C=TR',
roles: [{ role: 'readWrite', db: 'myApp' }]
})
// Connect using certificate in Node.js
const client = new MongoClient('mongodb://localhost:27017', {
tls: true,
tlsCertificateKeyFile: '/etc/ssl/client.pem',
tlsCAFile: '/etc/ssl/ca.pem',
authMechanism: 'MONGODB-X509'
})Comparando SCRAM e x.509
O SCRAM é mais simples de configurar — crie um usuário com nome de usuário e senha e conecte-se. Ele é adequado para a maioria dos serviços de aplicação e para o acesso de desenvolvedores. O x.509 é mais complexo (exige uma infraestrutura de PKI), mas oferece garantias mais robustas: não há senhas para alterar ou vazar, há listas de revogação de certificados (CRLs) para revogar imediatamente o acesso, e seu uso é obrigatório para a autenticação de membros de conjuntos de réplicas em ambientes de alta segurança.
Alternando senhas e atualizando usuários
O MongoDB fornece db.updateUser() para alterar a senha de um usuário existente sem excluir e recriar a conta. No Atlas, alterne as credenciais pela interface ou pela API do Atlas. Ao alternar uma senha, atualize a cadeia de conexão da aplicação antes de alterar a senha para evitar um período de interrupção da conectividade. Use variáveis de ambiente de URI da cadeia de conexão para que a alternância da senha exija apenas a atualização de uma variável de ambiente e a reinicialização da aplicação.
// Rotate password for an existing user
use admin
db.updateUser('apiSvc', {
pwd: 'NewStrongerPassword!2024'
})
// Or use changeUserPassword shorthand
db.changeUserPassword('apiSvc', 'NewStrongerPassword!2024')Visualizando e removendo usuários
Audite regularmente seus usuários do MongoDB. Use db.getUsers() para listar todos os usuários de um banco de dados e db.getUser('name') para obter detalhes de uma conta específica, incluindo as funções atribuídas a ela. Remova imediatamente contas obsoletas ou comprometidas com db.dropUser(). No Atlas, a seção Users do painel Database Access fornece um inventário centralizado de todos os usuários em todos os clusters.
// List all users in current database
use myApp
db.getUsers()
// Get details of a specific user
db.getUser('apiSvc')
// Remove a user
db.dropUser('oldReportingService')Verificação rápida
Teste sua compreensão dos conceitos de MongoDB e bancos de dados NoSQL desta lição.
Resumo da lição
Nesta lição, você aprendeu que SCRAM-SHA-256 é o mecanismo de autenticação padrão do MongoDB baseado em senha e é adequado para a maioria dos casos de uso de aplicações; certificados x.509 fornecem uma autenticação criptográfica mais robusta e são preferidos para a autenticação interna de membros do cluster; e você deve sempre criar usuários com funções de privilégio mínimo — contas de aplicação nunca devem ter permissões em nível administrativo. A seguir, veremos o controle de acesso baseado em funções.
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 “Mecanismos de autenticação: SCRAM e x.509” é grátis?
Sim — o texto completo de “Mecanismos de autenticação: SCRAM e x.509” é 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 “Mecanismos de autenticação: SCRAM e x.509”?
Os alunos habilitarão a autenticação SCRAM-SHA-256, criarão usuários do banco de dados e configurarão a autenticação baseada em certificados x.509 para a autenticação interna do cluster. 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 1 de 4.
Quanto tempo leva a aula “Mecanismos de autenticação: SCRAM e x.509”?
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