MongoDB Enterprise supports:
Puede reenviar 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 a través de
saslauthdo mediante las bibliotecas del sistema operativo.
Para obtener más información, consulta las secciones autenticación por Proxy LDAP y autorizacion LDAP en la documentación de MongoDB Server.
Puede usar el operador de Kubernetes para configurar LDAP para autenticar sus aplicaciones cliente que se conectan a sus implementaciones de MongoDB. Esta guía describe cómo configurar la autenticación LDAP desde aplicaciones cliente hasta tus implementaciones de MongoDB.
Nota
No puedes asegurar una instancia autónoma de MongoDB en un clúster de Kubernetes.
Considerations
Para configurar LDAP en CustomResourceDefinitions, utilice los parámetros en la
spec.security.authentication.ldapy otras configuraciones de seguridad de LDAP específicas del MongoDB Agent, de la especificación de recursos del operador de Kubernetes MongoDB. Los procedimientos de esta sección describen los ajustes necesarios y proporcionan ejemplos de configuración LDAP.Para mejorar la seguridad, considere implementar un set de réplicas cifrado con TLS o un clúster particionado cifrado con TLS. El cifrado con TLS es opcional. Por defecto, el tráfico de LDAP 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 la posibilidad de utilizar LDAP sobre TLS para cifrar las solicitudes de autenticación en sus implementaciones de MongoDB del operador de Kubernetes.
Requisitos generales previos
Antes de configurar la autenticación LDAP para tus implementaciones de MongoDB, completa las siguientes tareas:
Asegúrate de implementar el recurso de base de datos MongoDB Enterprise. Las bases de datos MongoDB Community no admiten la autenticación LDAP.
Implementa el set de réplicas o implementa el clúster cuya autenticación de cliente deseas proteger con LDAP.
Configurar la autenticación de cliente LDAP para un set de réplicas
Copia el recurso de set de réplicas de muestra.
Cambia los ajustes de este archivo YAML para que coincidan con la configuración de set de réplicas deseada.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 7 members: 3 8 version: "8.0.0" 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 ...
Pega la sección del ejemplo copiado en tu recurso existente del set de réplicas.
Open your preferred text editor and paste the object specification at the end of your resource file in the spec section.
Configura los ajustes LDAP para tu set de réplicas recurso.
Para habilitar LDAP en tu implementación, configura los siguientes ajustes en tu objeto de Kubernetes:
Clave | Tipo y necesidad | Descripción | Ejemplo |
|---|---|---|---|
| booleano, | Establecer en |
|
| string, | Especifique el nombre distintivo de LDAP al que MongoDB se vincula al conectarse al servidor LDAP. |
|
| string, | Especifica el nombre del secreto que contiene la contraseña del nombre distinguido de LDAP Bind, con la que MongoDB se conecta a un servidor LDAP. |
|
| string, | Agrega el nombre del ConfigMap que almacena la CA personalizada que usaste para firmar los certificados TLS de tu implementación. |
|
| string, | Agregue el nombre del campo que almacena el CA que valida el certificado TLS del servidor LDAP. |
|
| arreglo de cadenas, | Especifica la lista de combinaciones de |
|
| string, | Establezca en |
|
| string, | Specify the mapping that maps the username provided to Para aprender más, consulta security.ldap.userToDNMapping y Plantillas de query LDAP en la documentación de MongoDB Server. |
|
| string, | Establecido en |
|
La configuración resultante puede ser similar 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 configuraciones de LDAP, consulte configuraciones de seguridad en la especificación de recursos MongoDB del Operador de Kubernetes. Consulta también la spec.security.authentication.agents.automationUserName configuración para el usuario del MongoDB Agent en tu implementación de Kubernetes con LDAP habilitado.
Configura los ajustes LDAP para el MongoDB Agent.
Actualiza tu recurso MongoDB con configuraciones de seguridad específicas para el agente, a partir de las especificaciones del recurso MongoDB del operador de Kubernetes. La configuración resultante puede tener una apariencia similar al 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
Guarda tu set de réplicas config archivo.
Aplica tus cambios a tu set de réplicas implementación.
Invoca el siguiente comando de Kubernetes para actualizar tu set de réplicas:
kubectl apply -f <replica-set-conf>.yaml
Rastrea el estado de tu implementación.
Para verificar el estado de su MongoDB recurso, utilice el siguiente comando:
kubectl get mdb <resource-name> -o yaml -w
Con la bandera -w (observar) activada, cuando la configuración cambia, la salida se actualiza inmediatamente hasta que la fase de estado alcanza el estado Running. Para obtener más información sobre el estado de implementación de recursos, consulta Solucionar problemas con el operador de Kubernetes.
Configurar la autenticación del cliente LDAP para un clúster fragmentado
Copia el recurso de clúster de muestra.
Cambie la configuración de este archivo YAML para que coincida con la configuración de su clúster.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-sharded-cluster> 6 spec: 7 shardCount: 2 8 mongodsPerShardCount: 3 9 mongosCount: 2 10 configServerCount: 3 11 version: "8.0.0" 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 ...
Configura los ajustes de LDAP para tu recurso del clúster.
Para habilitar LDAP en tu implementación, configura los siguientes ajustes en tu objeto de Kubernetes:
Clave | Tipo y necesidad | Descripción | Ejemplo |
|---|---|---|---|
| booleano, | Establecer en |
|
| string, | Especifique el nombre distintivo de LDAP al que MongoDB se vincula al conectarse al servidor LDAP. |
|
| string, | Especifica el nombre del secreto que contiene la contraseña del nombre distinguido de LDAP Bind, con la que MongoDB se conecta a un servidor LDAP. |
|
| string, | Agrega el nombre del ConfigMap que almacena la CA personalizada que usaste para firmar los certificados TLS de tu implementación. |
|
| string, | Agregue el nombre del campo que almacena el CA que valida el certificado TLS del servidor LDAP. |
|
| arreglo de cadenas, | Especifica la lista de combinaciones de |
|
| string, | Establezca en |
|
| string, | Specify the mapping that maps the username provided to Para aprender más, consulta security.ldap.userToDNMapping y Plantillas de query LDAP en la documentación de MongoDB Server. |
|
| string, | Establecido en |
|
La configuración resultante puede ser similar 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 configuraciones de LDAP, consulte configuraciones de seguridad en la especificación de recursos MongoDB del Operador de Kubernetes. Consulta también la spec.security.authentication.agents.automationUserName configuración para el usuario del MongoDB Agent en tu implementación de Kubernetes con LDAP habilitado.
Configura los ajustes LDAP para el MongoDB Agent.
Actualiza tu recurso MongoDB con configuraciones de seguridad específicas para el agente, a partir de las especificaciones del recurso MongoDB del operador de Kubernetes. La configuración resultante puede tener una apariencia similar al 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
Guarde su archivo de configuración de clúster fragmentado.
Aplicar los cambios en la implementación de clúster.
Ejecuta el siguiente comando de Kubernetes para actualizar tu clúster fragmentado:
kubectl apply -f <sharded-cluster-conf>.yaml
Rastrea el estado de tu implementación.
Para verificar el estado de su MongoDB recurso, utilice el siguiente comando:
kubectl get mdb <resource-name> -o yaml -w
Con la bandera -w (observar) activada, cuando la configuración cambia, la salida se actualiza inmediatamente hasta que la fase de estado alcanza el estado Running. Para obtener más información sobre el estado de implementación de recursos, consulta Solucionar problemas con el operador de Kubernetes.