Para agentes de IA: um índice de documentação está disponível em https://www.mongodb.com/pt-br/docs/llms.txt — as versões de markdown de todas as páginas estão disponíveis anexando .md a qualquer caminho de URL.
Menu Docs

Configurar autenticação e autorização para mongot

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 do mongot com sua implantação do MongoDB para replicação. Você configura um mecanismo de autenticação aqui para que o mongot possa se autenticar no mongod ou no mongos.

  • servidor gRPC (server.grpc): O canal de entrada sobre o qual mongod se conecta a mongot para query de pesquisa e comandos de gerenciamento de índice. mongod e mongot se 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.

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.replicaSet e syncSource.router em seu arquivo de configuração mongot e configurar a autenticação em cada conexão de forma independente. syncSource.router não está implícito em syncSource.replicaSet, portanto, você deve configurá-lo explicitamente. Cada shard requer sua própria instância mongot dedicada.

    • syncSource.replicaSet mapeia a instância mongot para o conjunto de réplicas do seu shard.

    • syncSource.router fornece a conexão mongos para coordenação em todo o cluster.

  • A função integrada searchCoordinator deve existir em sua implantação do MongoDB antes que mongot possa autenticar. Essa função está disponível no MongoDB 8.2 e posterior.

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.

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:

1

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" } ]
})
2

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>")
3

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.

4

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

caFile

O arquivo PEM que contém um ou mais X.509 Certificados CA que verificam o certificado do servidor de mongod. Se você omitir este campo, mongot usará o armazenamento de confiança padrão da JVM.

tlsCertificateKeyFile

O arquivo PEM que contém o certificado X.509 do cliente e sua chave privada. Necessário somente se mongod verificar os certificados do cliente.

tlsCertificateKeyFilePasswordFile

A senha que descriptografa a chave do certificado do cliente. Obrigatório somente se tlsCertificateKeyFile for protegido por senha.

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:

1

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" } ]
})
2

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

tlsCertificateKeyFile

Obrigatório. O arquivo PEM que contém o certificado X.509 e sua chave privada.

caFile

Obrigatório. O arquivo PEM que contém um ou mais X.509 Certificados CA que verificam o certificado do mongod.

tlsCertificateKeyFilePasswordFile

opcional. O arquivo que contém a senha que descriptografa a chave privada em tlsCertificateKeyFile, se a chave estiver criptografada.

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

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:

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"

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

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