Este tutorial mostra como conectar mongosh a um conjunto de réplicas autogerenciadas habilitadas 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 sistemas autogerenciados.
Controle de acesso MongoDB habilitado em sua implantação e pelo menos um usuário administrador criado. Para configurar o controle de acesso, consulte Habilitar controle de acesso em sistemas autogerenciados. Este usuário deve ter
clusterMonitorprivilégios do.Se você deseja se conectar ao seu sistema utilizando autenticação X.509, certifique-se de ter o OpenSSL instalado para gerar um certificado de cliente .
Acesso
mongosha.
Passos
Se você não quiser usar a autenticação de cliente TLS mútua ou X.,509 siga este procedimento. Se você allowConnectionsWithoutCertificates definir true como na configuração do servidor , os clientes poderão se conectar sem apresentar um certificado e autenticar com o SCRAM.
Conecte-se à sua implantação com mongosh
Conecte o mongosh ao seu conjunto de réplicas utilizando 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.--tlsCAFileestá definido para o certificado da 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 autentica você. Para executar a maioria dos comandos, você deve autenticar com um mecanismo como SCRAM.
Autenticar usuário
Use o método para autenticar com seu nome de usuário e senha de db.auth() administrador.
Se você quiser usar a autenticação mútua de cliente TLS e X.509 ao se conectar ao seu sistema, 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 para509 autenticação X., mesmo que os certificados do seu 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:
Em seu 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, isso é
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 um local seguro 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 certificado do 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 ao seu sistema com seu certificado de cliente
Conecte o mongosh ao seu conjunto de réplicas utilizando 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.--tlsCAFileestá definido para o certificado da CA que assinou os certificadosmongoshdo servidor para que possa verificar a conexão do servidor .--tlsCertificateKeyFileapresenta o certificado do cliente e a chave privada que o servidor utiliza para autenticar sua conexão com X.509.
Isso conecta você à sua implantação do MongoDB por TLS.
Autenticar como usuário administrador
Use o método para autenticar com seu nome de usuário e senha de db.auth() administrador.
Criar um usuário no $external banco de dados do
Crie um usuário no $external banco de dados que corresponda ao nome db.createUser() do assunto do certificado do cliente com o método. Substitua o nome de usuário pelo assunto do certificado do 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" } ] })
Após criar um usuário, utilize o método para autenticar db.auth() no $external banco de dados do utilizando509 X.:
db.getSiblingDB("$external").auth({ mechanism: "MONGODB-X509", user: "C=US, ST=New-York, L=New York City, O=MongoDB, CN=myUser" })
Resultado final
Após concluir este tutorial, o mongosh está conectado ao seu conjunto de réplicas por uma conexão TLS criptografada, autenticada com SCRAM ou X.509.