Docs Menu
Docs Home
/ /
Conexiones de cliente seguras

Autenticación segura de clientes con LDAP

MongoDB Enterprise admite:

  • Envío de solicitudes de autenticación a un servicio de Protocolo ligero de acceso a directorios (LDAP).

  • Enlace simple y SASL a servidores LDAP. MongoDB Enterprise puede enlazarse a un servidor LDAP mediante saslauthd o a través de las bibliotecas del sistema operativo.

Para obtener más información, consulte las secciones Autenticación de proxy LDAP y Autorización LDAP en la documentación del servidor MongoDB.

Puede usar el operador de Kubernetes para configurar LDAP y autenticar las aplicaciones cliente que se conectan a sus implementaciones de MongoDB. Esta guía describe cómo configurar la autenticación LDAP desde las aplicaciones cliente a sus implementaciones de MongoDB.

Nota

No es posible proteger una instancia independiente de MongoDB en un clúster de Kubernetes.

  • Para configurar LDAP en CustomResourceDefinitionsUtilice los parámetros de spec.security.authentication.ldap y otras configuraciones de seguridad LDAP específicas del Agente MongoDB, de la especificación de recursos MongoDB del Operador de Kubernetes. Los procedimientos de esta sección describen las configuraciones necesarias y proporcionan ejemplos de configuración LDAP.

  • Para mejorar la seguridad, considere implementar un conjunto de réplicas cifradas con TLS o un clúster fragmentado cifrado con TLS. El cifrado con TLS es opcional. De forma predeterminada, el tráficoLDAP se envía como texto sin formato. Esto significa que el nombre de usuario y la contraseña están expuestos a amenazas de red. Muchos servicios de directorio modernos, como Microsoft Active Directory, requieren conexiones cifradas. Considere usar LDAP sobre TLS/SSL para cifrar las solicitudes de autenticación en sus implementaciones de Kubernetes Operator MongoDB.

Antes de configurar la autenticación LDAP para sus implementaciones de MongoDB, complete las siguientes tareas:

  • Asegúrese de implementar el recurso de base de datos MongoDB Enterprise. Las bases de datos de la comunidad MongoDB no admiten la autenticación LDAP.

  • Implemente el conjunto de réplicas o implemente el clúster fragmentado cuya autenticación de cliente desea proteger con LDAP.

1

Cambie la configuración de este archivo YAML para que coincida con la configuración del conjunto de réplicas deseada.

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: <my-replica-set>
6spec:
7 members: 3
8 version: "4.2.2-ent"
9 opsManager:
10 configMapRef:
11 # Must match metadata.name in ConfigMap file
12 name: <configMap.metadata.name>
13 credentials: <mycredentials>
14 type: ReplicaSet
15 persistent: true
16 security:
17 tls:
18 ca: <custom-ca>
19 certsSecretPrefix: <prefix>
20...
2

Abre el editor de texto de preferencia y pega la especificación del objeto al final del archivo recurso, en la sección spec.

3

Para habilitar LDAP en su implementación, configure las siguientes opciones en su objeto de Kubernetes:

Clave
Tipo y necesidad
Descripción
Ejemplo
boolean,
required

Establezca en true para habilitar la autenticación LDAP.

true

string,
required

Especifique el nombre distinguido LDAP al que MongoDB se vincula cuando se conecta al servidor LDAP.

cn=admin,dc=example,dc=org

string,
required

Especifica el nombre del secreto que contiene la contraseña del nombre distinguido de enlace de LDAP con el que MongoDB se conecta a un servidor LDAP.

<secret-name>

string,
optional

Agregue el nombre de ConfigMap que almacena la CA personalizada que utilizó para firmar los certificados TLS de su implementación.

<configmap-name>

string,
optional

Agregue el nombre del campo que almacena la CA que valida el certificado TLS del servidor LDAP.

<configmap-key>

array of strings,
required

Especifique la lista de hostname:port combinaciones de uno o más servidores LDAP. Para cada servidor, utilice una línea independiente.

<example.com:636>

string,
optional

Establezca tls para usar LDAPS (LDAP sobre TLS). Déjelo en blanco si su servidor LDAP no acepta TLS. Debe habilitar TLS al implementar el recurso de base de datos para usar esta configuración.

tls

string,
required

Especifique la asignación que asigna el nombre de usuario proporcionado a mongod o para mongos la autenticación a un nombre distinguido (DN) LDAP.

Para obtener más información, consulte security.ldap.userToDNMapping y Plantillas de consulta LDAP en la documentación del servidor MongoDB.

<match: "(.+)",substitution: "uid={0},ou=groups,dc=example,dc=org">

string,
required

Establezca en LDAP para habilitar la autenticación a través de LDAP.

LDAP

La configuración resultante puede parecerse al siguiente ejemplo:

security:
authentication:
enabled: true
# Enabled LDAP Authentication Mode
modes:
- "LDAP"
- "SCRAM"
# LDAP related configuration
ldap:
# Specify the hostname:port combination of one or
# more LDAP servers
servers:
- "ldap1.example.com:636"
- "ldap2.example.com:636"
# Set to "tls" to use LDAP over TLS. Leave blank if
# the LDAP server doesn't accept TLS. You must enable TLS when you deploy the database resource to use this setting.
transportSecurity: "tls"
# If TLS is enabled, add a reference to a ConfigMap that
# contains a CA certificate that validates the LDAP server's
# TLS certificate.
caConfigMapRef:
name: "<configmap-name>"
key: "<configmap-entry-key>"
# Specify the LDAP Distinguished Name to which
# MongoDB binds when connecting to the LDAP server
bindQueryUser: "cn=admin,dc=example,dc=org"
# Specify the password with which MongoDB binds
# when connecting to an LDAP server. This is a
# reference to a Secret Kubernetes Object containing
# one "password" key.
bindQueryPasswordSecretRef:
name: "<secret-name>"

Para obtener una lista completa de las configuraciones de LDAP, consulte la configuración de seguridad en la especificación de recursos de MongoDB del operador de Kubernetes. Consulte también la spec.security.authentication.agents.automationUserName configuración del usuario del agente de MongoDB en su implementación del operador de Kubernetes con LDAP habilitado.

4

Actualice su recurso MongoDB con la configuración de seguridad específica del agente, según la especificación del recurso MongoDB del operador de Kubernetes. La configuración resultante podría ser similar a la del siguiente ejemplo:

security:
authentication:
agents:
automationPasswordSecretRef:
key: automationConfigPassword
name: automation-config-password
automationUserName: mms-automation-agent
clientCertificateSecretRef:
name: agent-client-cert
mode: LDAP
enabled: true
ldap:
bindQueryPasswordSecretRef:
name: bind-query-password
bindQueryUser: cn=admin,dc=example,dc=org
servers:
- openldap.namespace.svc.cluster.local:389
userToDNMapping: '[{match: "(.+)",substitution: "uid={0},ou=groups,dc=example,dc=org"}]'
modes:
- LDAP
- SCRAM
requireClientTLSAuthentication: false
5
6

Invoque el siguiente comando de Kubernetes para actualizar su conjunto de réplicas:

kubectl apply -f <replica-set-conf>.yaml
7

Para comprobar el estado de su recurso MongoDB, utilice el siguiente comando:

kubectl get mdb <resource-name> -o yaml -w

Con el -w indicador (observación) activado, cuando la configuración cambia, la salida se actualiza inmediatamente hasta que la fase de estado alcanza el Running estado. Para obtener más información sobre los estados de implementación de recursos, consulte Solucionar problemas del operador de Kubernetes.

1

Cambie la configuración de este archivo YAML para que coincida con la configuración de clúster fragmentado deseada.

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: <my-sharded-cluster>
6spec:
7 shardCount: 2
8 mongodsPerShardCount: 3
9 mongosCount: 2
10 configServerCount: 3
11 version: "4.2.2-ent"
12 opsManager:
13 configMapRef:
14 name: <configMap.metadata.name>
15 # Must match metadata.name in ConfigMap file
16 credentials: <mycredentials>
17 type: ShardedCluster
18 persistent: true
19 security:
20 tls:
21 ca: <custom-ca>
22 certsSecretPrefix: <prefix>
23...
2

Abre el editor de texto de preferencia y pega la especificación del objeto al final del archivo recurso, en la sección spec.

3

Para habilitar LDAP en su implementación, configure las siguientes opciones en su objeto de Kubernetes:

Clave
Tipo y necesidad
Descripción
Ejemplo
boolean,
required

Establezca en true para habilitar la autenticación LDAP.

true

string,
required

Especifique el nombre distinguido LDAP al que MongoDB se vincula cuando se conecta al servidor LDAP.

cn=admin,dc=example,dc=org

string,
required

Especifica el nombre del secreto que contiene la contraseña del nombre distinguido de enlace de LDAP con el que MongoDB se conecta a un servidor LDAP.

<secret-name>

string,
optional

Agregue el nombre de ConfigMap que almacena la CA personalizada que utilizó para firmar los certificados TLS de su implementación.

<configmap-name>

string,
optional

Agregue el nombre del campo que almacena la CA que valida el certificado TLS del servidor LDAP.

<configmap-key>

array of strings,
required

Especifique la lista de hostname:port combinaciones de uno o más servidores LDAP. Para cada servidor, utilice una línea independiente.

<example.com:636>

string,
optional

Establezca tls para usar LDAPS (LDAP sobre TLS). Déjelo en blanco si su servidor LDAP no acepta TLS. Debe habilitar TLS al implementar el recurso de base de datos para usar esta configuración.

tls

string,
required

Especifique la asignación que asigna el nombre de usuario proporcionado a mongod o para mongos la autenticación a un nombre distinguido (DN) LDAP.

Para obtener más información, consulte security.ldap.userToDNMapping y Plantillas de consulta LDAP en la documentación del servidor MongoDB.

<match: "(.+)",substitution: "uid={0},ou=groups,dc=example,dc=org">

string,
required

Establezca en LDAP para habilitar la autenticación a través de LDAP.

LDAP

La configuración resultante puede parecerse al siguiente ejemplo:

security:
authentication:
enabled: true
# Enabled LDAP Authentication Mode
modes:
- "LDAP"
- "SCRAM"
# LDAP related configuration
ldap:
# Specify the hostname:port combination of one or
# more LDAP servers
servers:
- "ldap1.example.com:636"
- "ldap2.example.com:636"
# Set to "tls" to use LDAP over TLS. Leave blank if
# the LDAP server doesn't accept TLS. You must enable TLS when you deploy the database resource to use this setting.
transportSecurity: "tls"
# If TLS is enabled, add a reference to a ConfigMap that
# contains a CA certificate that validates the LDAP server's
# TLS certificate.
caConfigMapRef:
name: "<configmap-name>"
key: "<configmap-entry-key>"
# Specify the LDAP Distinguished Name to which
# MongoDB binds when connecting to the LDAP server
bindQueryUser: "cn=admin,dc=example,dc=org"
# Specify the password with which MongoDB binds
# when connecting to an LDAP server. This is a
# reference to a Secret Kubernetes Object containing
# one "password" key.
bindQueryPasswordSecretRef:
name: "<secret-name>"

Para obtener una lista completa de las configuraciones de LDAP, consulte la configuración de seguridad en la especificación de recursos de MongoDB del operador de Kubernetes. Consulte también la spec.security.authentication.agents.automationUserName configuración del usuario del agente de MongoDB en su implementación del operador de Kubernetes con LDAP habilitado.

4

Actualice su recurso MongoDB con la configuración de seguridad específica del agente, según la especificación del recurso MongoDB del operador de Kubernetes. La configuración resultante podría ser similar a la del siguiente ejemplo:

security:
authentication:
agents:
automationPasswordSecretRef:
key: automationConfigPassword
name: automation-config-password
automationUserName: mms-automation-agent
clientCertificateSecretRef:
name: agent-client-cert
mode: LDAP
enabled: true
ldap:
bindQueryPasswordSecretRef:
name: bind-query-password
bindQueryUser: cn=admin,dc=example,dc=org
servers:
- openldap.namespace.svc.cluster.local:389
userToDNMapping: '[{match: "(.+)",substitution: "uid={0},ou=groups,dc=example,dc=org"}]'
modes:
- LDAP
- SCRAM
requireClientTLSAuthentication: false
5
6

Invoque el siguiente comando de Kubernetes para actualizar su clúster fragmentado:

kubectl apply -f <sharded-cluster-conf>.yaml
7

Para comprobar el estado de su recurso MongoDB, utilice el siguiente comando:

kubectl get mdb <resource-name> -o yaml -w

Con el -w indicador (observación) activado, cuando la configuración cambia, la salida se actualiza inmediatamente hasta que la fase de estado alcanza el Running estado. Para obtener más información sobre los estados de implementación de recursos, consulte Solucionar problemas del operador de Kubernetes.