Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Configurar la autenticación y autorización para mongot

Use this page to configure authentication and authorization for your mongot and MongoDB Community Edition deployments. For information on using mongot with , see MongoDB Search and Vector Search with Kubernetes.

mongot se comunica a través de dos canales distintos, cada uno de los cuales requiere su propia configuración de seguridad:

  • Sincronizar origen (syncSource.replicaSet, syncSource.router): conexión saliente de mongot a su implementación de MongoDB para la replicación. Aquí se configura un mecanismo de autenticación para que mongot pueda autenticarse en mongod o mongos.

  • servidor gRPC (server.grpc): el canal de entrada a través del cual mongod se conecta a mongot para consultas de búsqueda y comandos de gestión de índices. mongod y mongot se autentican entre sí a través de mTLS.

Nota

Los puntos de conexión de verificación de estado (healthCheck) y métricas (metrics) no admiten TLS ni autenticación. Restrinja el acceso a estos puertos en la capa de red.

Antes de configurar la autenticación, revisa los siguientes puntos:

  • Debe configurar exactamente un mecanismo de autenticación para la fuente de sincronización: SCRAM o X.509. Los dos mecanismos son mutuamente excluyentes para cada bloque de conexión.

  • Para los clústeres particionados, debe especificar syncSource.replicaSet y syncSource.router en el archivo de configuración mongot y configurar la autenticación en cada conexión de forma independiente. syncSource.router no está implícito en syncSource.replicaSet, por lo que debe configurarlo explícitamente. Cada partición requiere su propia instancia mongot dedicada.

    • syncSource.replicaSet asigna la instancia mongot al set de réplicas de su partición.

    • syncSource.router proporciona la conexión mongos para la coordinación en todo el clúster.

  • El rol de funcionalidad incorporada searchCoordinator debe existir en su implementación de MongoDB antes de que mongot pueda autenticarse. Este rol está disponible en MongoDB 8.2 y versiones posteriores.

Añade las siguientes opciones de setParameter a tu archivo de configuración de mongod y, a continuación, reinicia mongod:

setParameter:
mongotHost: <host>:<port>
searchIndexManagementHostAndPort: <host>:<port>
skipAuthenticationToSearchIndexManagementServer: false
useGrpcForSearch: true

La opción setParameter establece parámetros del servidor que le indican al servidor mongod cómo ubicar y comunicarse con mongot. Debe establecer estos parámetros antes de que mongot pueda conectarse a su implementación.

Para obtener más información sobre el archivo de configuración mongod, consulte Opciones de archivo de configuración autogestionado.

Configure uno de los siguientes mecanismos de autenticación en la conexión de la fuente de sincronización para que mongot pueda autenticarse en su implementación de MongoDB.

SCRAM autentica mongot en su implementación de MongoDB con un nombre de usuario y una contraseña.

Para configurar SCRAM para mongot, siga los pasos siguientes:

1

Crea el usuario en tu set de réplicas de MongoDB con el rol searchCoordinator.

Ejecute el siguiente comando en mongosh:

use admin
db.createUser({
user: "mongotUser",
pwd: "<password>",
roles: [ { role: "searchCoordinator", db: "admin" } ]
})
2

Reemplace <password> con su contraseña y, a continuación, ejecute el comando de su sistema operativo para crear el archivo de contraseña. El archivo no debe contener un salto de línea final.

Para Linux o macOS:

echo -n "<password>" > /etc/mongot/secrets/passwordFile
chmod 400 /etc/mongot/secrets/passwordFile

Para el símbolo del sistema de Windows:

echo|set /p="<password>" > passwordFile

Para Windows Powershell:

[System.IO.File]::WriteAllText("passwordFile", "<password>")
3

Agregue el bloque scramAuth en syncSource.replicaSet. Para los clústeres particionados, también agregue el mismo bloque en syncSource.router. Enumere varios host en hostAndPort para que mongot aún pueda descubrir el set de réplicas si un host no está disponible:

syncSource:
replicaSet:
hostAndPort:
- "<host1>:27017"
- "<host2>:27017"
scramAuth:
username: mongotUser
authSource: admin
passwordFile: /etc/mongot/secrets/passwordFile
tls:
enabled: false

Para clústeres particionados, configure scramAuth en syncSource.replicaSet y syncSource.router. syncSource.replicaSet autentica mongot en el set de réplicas de la partición, y syncSource.router autentica mongot en mongos para la coordinación de todo el clúster. Puede usar las mismas credenciales para ambas conexiones o credenciales separadas si las administra de forma independiente:

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 obtener más información sobre el archivo de configuración de mongot, consulta Configurar mongot.

4

Si su implementación de MongoDB tiene TLS habilitado, establezca tls.enabled en true y proporcione los siguientes campos a su archivo de configuración mongot según sea necesario:

Campo
Descripción

caFile

El archivo PEM que contiene uno o más X.509 Certificados de CA que verifican el certificado de servidor de mongod. Si omite este campo, mongot utiliza el almacén de confianza por defecto de JVM.

tlsCertificateKeyFile

El archivo PEM que contiene el certificado X.509 del cliente y su llave privada. Solo es necesario si mongod verifica los certificados de cliente.

tlsCertificateKeyFilePasswordFile

La contraseña que descifra la clave del certificado del cliente. Solo es necesario si tlsCertificateKeyFile está protegido con contraseña.

La autenticación X.509 permite que mongot se autentique en su implementación de MongoDB con un certificado de cliente TLS en lugar de un nombre de usuario y una contraseña. TLS siempre está habilitado cuando se utiliza X.509.

Para configurar X.509 para mongot, complete los siguientes pasos:

1

Crea el usuario en tu set de réplicas de MongoDB con el rol searchCoordinator. El nombre de usuario debe coincidir exactamente con el asunto del certificado de cliente.

Ejecute el siguiente comando en mongosh:

use $external
db.createUser({
user: "CN=mongot,OU=...",
roles: [ { role: "searchCoordinator", db: "admin" } ]
})
2

Agregue el bloque x509 en syncSource.replicaSet. Para clústeres particionados, agregue el mismo bloque en syncSource.router.

En el bloque x509, tlsCertificateKeyFile y caFile son obligatorios. Enumere varios hosts en hostAndPort para que mongot pueda seguir detectando el set de réplicas si un host no está disponible:

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
Descripción

tlsCertificateKeyFile

Requerido. El archivo PEM que contiene el certificado X.509 y su llave privada.

caFile

Requerido. El archivo PEM que contiene uno o más X.509 Certificados de CA que verifican el certificado de mongod.

tlsCertificateKeyFilePasswordFile

opcional. El archivo que contiene la contraseña que descifra la llave privada en tlsCertificateKeyFile, si la llave está cifrada.

Para clústeres particionados, configure x509 en syncSource.replicaSet y syncSource.router. Utilice la misma estructura de campo para ambas conexiones y proporcione los puntos finales mongos en 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

El servidor gRPC es el canal de entrada a través del cual mongod se conecta a mongot para consultas de búsqueda y comandos de gestión de índices. Protege este canal en la capa de transporte con TLS. Para autenticar mutuamente mongod y mongot, utilice mTLS.

Configura el modo TLS con la opción server.grpc.tls.mode en mongot y el parámetro searchTLSMode en mongod. Cuando no estableces searchTLSMode, mongod hereda el modo TLS de net.tls.mode para su conexión a mongot porque searchTLSMode tiene como valor predeterminado globalTLS.

Puede configurar uno de los siguientes modos TLS en el archivo de configuración mongot:

Sin TLS. Utilice este modo solo para implementaciones en las que mongod y mongot se ejecuten en el mismo host:

server:
grpc:
address: "localhost:27028"
tls:
mode: "disabled"

mongot presenta un certificado de servidor y mongod lo verifica antes de establecer la conexión. Este modo requiere 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 y mongod presentan y verifican los certificados del otro. Este modo requiere certificateKeyFile y caFile. Cuando utilice mtls, también debe configurar mongod con la configuración TLS correspondiente para su conexión a 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