Use esta página para configurar a autenticação e a autorização para suas implantações do mongot e do MongoDB Community Edition. Para obter informações sobre como usar o mongot com os controladores MongoDB para Kubernetes operador, consulte MongoDB Search e pesquisa vetorial com Kubernetes.
mongot comunica-se por dois canais distintos, cada um dos quais requer sua própria configuração de segurança:
Sincronização fonte (
syncSource.replicaSet,syncSource.router): conexão de saída domongotcom sua implantação do MongoDB para replicação. Você configura um mecanismo de autenticação aqui para que omongotpossa se autenticar nomongodou nomongos.servidor gRPC (
server.grpc): O canal de entrada sobre o qualmongodse conecta amongotpara query de pesquisa e comandos de gerenciamento de índice.mongodemongotse autenticam mutuamente por meio de mTLS.
Observação
Os pontos de extremidade de verificação de integridade (healthCheck) e métricas (metrics) não oferecem suporte a TLS ou autenticação. Restrinja o acesso a essas portas na camada de rede.
Considerações
Antes de configurar a autenticação, revise os seguintes pontos:
Você deve configurar exatamente um mecanismo de autenticação para a origem de sincronização: SCRAM ou X.509. Os dois mecanismos são mutuamente exclusivos para cada bloco de conexão.
Para clusters sharded, você deve especificar
syncSource.replicaSetesyncSource.routerem seu arquivo de configuraçãomongote configurar a autenticação em cada conexão de forma independente.syncSource.routernão está implícito emsyncSource.replicaSet, portanto, você deve configurá-lo explicitamente. Cada shard requer sua própria instânciamongotdedicada.syncSource.replicaSetmapeia a instânciamongotpara o conjunto de réplicas do seu shard.syncSource.routerfornece a conexãomongospara coordenação em todo o cluster.
A função integrada
searchCoordinatordeve existir em sua implantação do MongoDB antes quemongotpossa autenticar. Essa função está disponível no MongoDB 8.2 e posterior.
Antes de começar
Adicione as seguintes opções setParameter ao seu arquivo de configuração mongod e reinicie mongod:
setParameter: mongotHost: <host>:<port> searchIndexManagementHostAndPort: <host>:<port> skipAuthenticationToSearchIndexManagementServer: false useGrpcForSearch: true
A opção setParameter define parâmetros do servidor que informam ao servidor mongod como localizar e se comunicar com mongot. Você deve definir esses parâmetros antes que mongot possa se conectar à sua implantação.
Para saber mais sobre o arquivo de configuração mongod, consulte Opções de arquivo de configuração autogerenciado.
Configurar autenticação de origem de sincronização
Configure um dos seguintes mecanismos de autenticação na conexão de origem de sincronização para que mongot possa se autenticar em sua implantação do MongoDB.
O SCRAM autentica mongot em sua implantação do MongoDB com um nome de usuário e senha.
Para configurar o SCRAM para mongot, conclua as seguintes etapas:
Crie o usuário mongot no banco de dados admin.
Crie o usuário em seu conjunto de réplicas do MongoDB com a função searchCoordinator.
Execute o seguinte comando em mongosh:
use admin db.createUser({ user: "mongotUser", pwd: "<password>", roles: [ { role: "searchCoordinator", db: "admin" } ] })
Crie um arquivo de senha no host mongot.
Substitua <password> pela sua senha e, em seguida, execute o comando do seu sistema operacional para criar o arquivo de senha. O arquivo não deve conter uma nova linha final.
Para Linux ou macOS:
echo -n "<password>" > /etc/mongot/secrets/passwordFile chmod 400 /etc/mongot/secrets/passwordFile
Para prompt de comando do Windows:
echo|set /p="<password>" > passwordFile
Para o Windows PowerShell:
[System.IO.File]::WriteAllText("passwordFile", "<password>")
Adicione o bloco scramAuth à sua configuração mongot.
Adicione o bloco scramAuth em syncSource.replicaSet. Para cluster sharded, adicione também o mesmo bloco em syncSource.router. Liste vários hosts em hostAndPort para que mongot ainda possa descobrir o conjunto de réplicas se um host estiver indisponível:
syncSource: replicaSet: hostAndPort: - "<host1>:27017" - "<host2>:27017" scramAuth: username: mongotUser authSource: admin passwordFile: /etc/mongot/secrets/passwordFile tls: enabled: false
Para coleções sharded, configure scramAuth em syncSource.replicaSet e syncSource.router. syncSource.replicaSet autentica mongot no conjunto de réplicas do shard e syncSource.router autentica mongot no mongos para coordenação em todo o cluster. Você pode usar as mesmas credenciais para ambas as conexões ou credenciais separadas se as administrar de forma independente:
syncSource: replicaSet: hostAndPort: - "<shard-host1>:27017" - "<shard-host2>:27017" scramAuth: username: mongotShardUser authSource: admin passwordFile: /etc/mongot/secrets/shard-passwordFile tls: enabled: false router: hostAndPort: - "<mongos1>:27017" - "<mongos2>:27017" scramAuth: username: mongotRouterUser authSource: admin passwordFile: /etc/mongot/secrets/router-passwordFile tls: enabled: false
Para obter mais informações sobre o arquivo de configuração mongot, consulte Configurar mongot.
Habilite o TLS para a conexão de origem de sincronização, se necessário.
Se sua implantação MongoDB tiver o TLS habilitado, defina tls.enabled como true e forneça os seguintes campos ao seu arquivo de configuração mongot conforme necessário:
Campo | Descrição |
|---|---|
| O arquivo PEM que contém um ou mais X.509 Certificados CA que verificam o certificado do servidor de |
| O arquivo PEM que contém o certificado X.509 do cliente e sua chave privada. Necessário somente se |
| A senha que descriptografa a chave do certificado do cliente. Obrigatório somente se |
A autenticação X.509 permite que mongot se autentique em sua implantação do MongoDB com um certificado de cliente TLS em vez de um nome de usuário e senha. O TLS está sempre ativado quando você usa X.509.
Para configurar X.509 para mongot, conclua as seguintes etapas:
Crie o usuário mongot no banco de dados $external.
Crie o usuário em seu conjunto de réplicas MongoDB com a função searchCoordinator. O nome de usuário deve corresponder exatamente ao assunto do certificado do cliente.
Execute o seguinte comando em mongosh:
use $external db.createUser({ user: "CN=mongot,OU=...", roles: [ { role: "searchCoordinator", db: "admin" } ] })
Adicione o bloco x509 à sua configuração mongot.
Adicione o bloco x509 em syncSource.replicaSet. Para clusters sharded, adicione o mesmo bloco em syncSource.router.
No bloco x509, tlsCertificateKeyFile e caFile são necessários. Liste vários hosts em hostAndPort para que mongot ainda possa descobrir o conjunto de réplicas se um host estiver indisponível:
syncSource: replicaSet: hostAndPort: - "<host1>:27017" - "<host2>:27017" x509: tlsCertificateKeyFile: /etc/mongot/tls/mongot-client.pem caFile: /etc/mongot/tls/ca.pem # tlsCertificateKeyFilePasswordFile: /etc/mongot/secrets/cert-key-password
Campo | Descrição |
|---|---|
| Obrigatório. O arquivo PEM que contém o certificado X.509 e sua chave privada. |
| Obrigatório. O arquivo PEM que contém um ou mais X.509 Certificados CA que verificam o certificado do |
| opcional. O arquivo que contém a senha que descriptografa a chave privada em |
Para coleções sharded, configure x509 em syncSource.replicaSet e syncSource.router. Use a mesma estrutura de campo para ambas as conexões e forneça os pontos de extremidade mongos em syncSource.router.hostAndPort:
syncSource: replicaSet: hostAndPort: - "<shard-host1>:27017" - "<shard-host2>:27017" x509: tlsCertificateKeyFile: /etc/mongot/tls/mongot-client.pem caFile: /etc/mongot/tls/ca.pem # tlsCertificateKeyFilePasswordFile: /etc/mongot/secrets/cert-key-password router: hostAndPort: - "<mongos1>:27017" - "<mongos2>:27017" x509: tlsCertificateKeyFile: /etc/mongot/tls/mongot-client.pem caFile: /etc/mongot/tls/ca.pem # tlsCertificateKeyFilePasswordFile: /etc/mongot/secrets/cert-key-password
Configurar a segurança de transporte do servidor gRPC
O servidor gRPC é o canal de entrada sobre o qual o mongod se conecta ao mongot para query de pesquisa e comandos de gerenciamento de índice. Você protege esse canal na camada de transporte com TLS. Para autenticar mutuamente o mongod e o mongot, use mTLS.
Você configura o modo TLS com a opção server.grpc.tls.mode em mongot e o parâmetro searchTLSMode em mongod. Quando você não define searchTLSMode, mongod herda o modo TLS de net.tls.mode para sua conexão com mongot porque searchTLSMode assume como padrão globalTLS.
Você pode configurar um dos seguintes modos TLS no arquivo de configuração mongot:
desabilitado
Sem TLS. Use este modo apenas para implantações onde mongod e mongot são executados no mesmo host:
server: grpc: address: "localhost:27028" tls: mode: "disabled"
TLS
mongot apresenta um certificado de servidor e mongod o verifica antes de estabelecer a conexão. Este modo requer certificateKeyFile:
server: grpc: address: "0.0.0.0:27028" tls: mode: "tls" certificateKeyFile: /etc/mongot/tls/mongot-server.pem # certificateKeyFilePasswordFile: /etc/mongot/secrets/server-key-password
TLS mútua (mTLS)
Ambos mongot e mongod estão presentes e verificam os certificados um do outro. Este modo requer certificateKeyFile e caFile. Ao usar mtls, você também deve configurar mongod com as configurações TLS correspondentes para sua conexão com mongot:
server: grpc: address: "0.0.0.0:27028" tls: mode: "mtls" certificateKeyFile: /etc/mongot/tls/mongot-server.pem caFile: /etc/mongot/tls/ca.pem