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 demongota su implementación de MongoDB para la replicación. Aquí se configura un mecanismo de autenticación para quemongotpueda autenticarse enmongodomongos.servidor gRPC (
server.grpc): el canal de entrada a través del cualmongodse conecta amongotpara consultas de búsqueda y comandos de gestión de índices.mongodymongotse 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.
Considerations
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.replicaSetysyncSource.routeren el archivo de configuraciónmongoty configurar la autenticación en cada conexión de forma independiente.syncSource.routerno está implícito ensyncSource.replicaSet, por lo que debe configurarlo explícitamente. Cada partición requiere su propia instanciamongotdedicada.syncSource.replicaSetasigna la instanciamongotal set de réplicas de su partición.syncSource.routerproporciona la conexiónmongospara la coordinación en todo el clúster.
El rol de funcionalidad incorporada
searchCoordinatordebe existir en su implementación de MongoDB antes de quemongotpueda autenticarse. Este rol está disponible en MongoDB 8.2 y versiones posteriores.
Antes de comenzar
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.
Configurar la autenticación de origen de sincronizar
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:
Cree el usuario mongot en la base de datos admin.
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" } ] })
Cree un archivo de contraseña en el host mongot.
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>")
Agregue el bloque scramAuth a su configuración mongot.
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.
Habilite TLS para la conexión de origen de sincronización si es necesario.
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 |
|---|---|
| El archivo PEM que contiene uno o más X.509 Certificados de CA que verifican el certificado de servidor de |
| El archivo PEM que contiene el certificado X.509 del cliente y su llave privada. Solo es necesario si |
| La contraseña que descifra la clave del certificado del cliente. Solo es necesario si |
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:
Cree el usuario mongot en la base de datos $external.
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" } ] })
Agregue el bloque x509 a su configuración mongot.
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 |
|---|---|
| Requerido. El archivo PEM que contiene el certificado X.509 y su llave privada. |
| Requerido. El archivo PEM que contiene uno o más X.509 Certificados de CA que verifican el certificado de |
| opcional. El archivo que contiene la contraseña que descifra la llave privada en |
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
Configurar la seguridad del transporte del servidor gRPC
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:
Desactivado
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"
TLS
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
TLS mutuo (mTLS)
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