Este tutorial mostra como conectar mongosh a um conjunto de réplicas autogerenciado habilitado para TLS.
Antes de começar
Antes de começar, verifique se você tem o seguinte:
Um conjunto de réplicas que você configurou para usar TLS usando as etapas em Configurar TLS em implantações autogerenciadas.
Controle de acesso do MongoDB habilitado em sua implantação e pelo menos um usuário administrador criado. Para configurar o controle de acesso, consulte Habilitar o controle de acesso em implantações autogerenciadas. Este usuário deve ter privilégios
clusterMonitor.Se você quiser se conectar à sua implantação usando a autenticação X.509, certifique-se de ter o OpenSSL instalado para gerar um certificado de cliente.
Acesso a
mongosh.
Passos
Se você não quiser usar TLS mútuo ou autenticação de cliente X.509, siga este procedimento. Se você definir allowConnectionsWithoutCertificates como true na configuração do servidor, os clientes poderão se conectar sem apresentar um certificado e se autenticar com SCRAM.
Conecte-se à sua implantação com mongosh
Conecte mongosh ao seu conjunto de réplicas usando as seguintes opções:
mongosh "mongodb://mongo0.example.com:27017,mongo1.example.com:27017,mongo2.example.com:27017" \ --tls --tlsCAFile /etc/ssl/mongodb/ca.pem
--tlshabilita a criptografia TLS para a conexão.--tlsCAFileé definido como o certificado CA que assinou os certificados do servidor para quemongoshpossa verificar os certificados do servidor.
A conexão sem um certificado de cliente estabelece uma sessão criptografada por TLS, mas não o autentica. Para executar a maioria dos comandos, você deve autenticar com um mecanismo como SCRAM.
Autenticar usuário
Utilize o método db.auth() para autenticar com seu nome de usuário e senha de administrador.
Se você quiser usar TLS mútuo e autenticação de cliente X.509 ao se conectar à sua implantação, siga este procedimento para criar e autenticar com um certificado de cliente.
Gerar um certificado de cliente
Aviso
Não use o mesmo certificado que os nós do servidor. Você deve gerar um novo certificado de cliente para autenticação X.509, mesmo que seus certificados de servidor sejam válidos para autenticação de cliente.
Gere um certificado de cliente usando o processo descrito em Obter certificados de servidor TLS. Faça os seguintes ajustes:
No arquivo de configuração, defina
extendedKeyUsage = clientAuthem vez deserverAuth.A CA que assinou seus certificados de autenticação de cliente de nó também deve assinar seu certificado de cliente. Geralmente, este é
ca.pem. No entanto, se você obteve certificados separados para autenticação de cliente, poderá ter uma CA diferente para certificados de cliente.Nomeie seus arquivos de saída
client.key,client.crteclient.pemem vez dos nomes específicos do nó usados no tutorial de certificado.
Após concluir o processo, copie client.pem para uma localização segura na máquina onde você executa mongosh:
cp client.pem /etc/ssl/mongodb/client.pem
Identifique o assunto do seu cliente
Identifique o assunto do seu certificado de cliente. Você precisa desse valor para confirmar que autenticou com o certificado de cliente esperado após a conexão.
Para visualizar o assunto, execute o seguinte comando:
openssl x509 -in /etc/ssl/mongodb/client.pem -noout -subject
Observe a saída, que se parece com o seguinte:
subject=C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser
Salve o nome do assunto para usar mais tarde neste tutorial. Neste exemplo, o nome do assunto é C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser.
Conecte-se à sua implantação com seu certificado de cliente
Conecte mongosh ao seu conjunto de réplicas usando as seguintes opções:
mongosh "mongodb://mongo0.example.com:27017,mongo1.example.com:27017,mongo2.example.com:27017" \ --tls \ --tlsCAFile /etc/ssl/mongodb/ca.pem \ --tlsCertificateKeyFile /etc/ssl/mongodb/client.pem
--tlshabilita a criptografia TLS para a conexão.--tlsCAFileé definido como o certificado CA que assinou os certificados do servidor para quemongoshpossa verificar a conexão do servidor.--tlsCertificateKeyFileapresenta o certificado do cliente e a chave privada que o servidor usa para autenticar sua conexão com X.509.
Isso o conecta à sua implantação do MongoDB por meio de TLS.
Autenticar como um usuário administrador
Utilize o método db.auth() para autenticar com seu nome de usuário e senha de administrador.
Criar um usuário no $external banco de dados do
Crie um usuário no banco de dados $external que corresponda ao nome do assunto do certificado do cliente com o método db.createUser(). Substitua o nome de usuário pelo assunto do seu certificado de cliente que você identificou anteriormente:
db.getSiblingDB("$external").runCommand({ createUser: "C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser", roles: [ { role: "readWriteAnyDatabase", db: "admin" } ] })
Depois de criar um usuário, use o método db.auth() para autenticar no banco de dados $external usando X.509:
db.getSiblingDB("$external").auth({ mechanism: "MONGODB-X509", user: "C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser" })
Resultado final
Depois de concluir este tutorial, mongosh será conectado ao seu conjunto de réplicas por meio de uma conexão TLS criptografada, autenticada com SCRAM ou X.509.