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
saslauthdo 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.
Considerations
Para configurar LDAP en CustomResourceDefinitions: utilice los parámetros de
spec.security.authentication.ldapy 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.
Requisitos generales
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.
Configurar la autenticación del cliente LDAP para un conjunto de réplicas
Copie el recurso del conjunto de réplicas de muestra.
Cambie la configuración de este archivo YAML para que coincida con la configuración del conjunto 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 ...
Pegue la sección de ejemplo copiada en su recurso de conjunto de réplicas existente.
Abre el editor de texto de preferencia y pega la especificación del objeto al final del archivo recurso, en la sección spec.
Configure los ajustes LDAP para su recurso de conjunto de réplicas.
Para habilitar LDAP en su implementación, configure las siguientes opciones en su objeto de Kubernetes:
Clave | Tipo y necesidad | Descripción | Ejemplo |
|---|---|---|---|
spec.security | boolean, required | Establezca en |
|
spec.security | string, required | Especifique el nombre distinguido LDAP al que MongoDB se vincula cuando se conecta al servidor LDAP. |
|
spec.security | 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. |
|
spec.security | string, optional | Agregue el nombre de ConfigMap que almacena la CA personalizada que utilizó para firmar los certificados TLS de su implementación. |
|
spec.security | string, optional | Agregue el nombre del campo que almacena la CA que valida el certificado TLS del servidor LDAP. |
|
spec.security | array of strings, required | Especifique la lista de |
|
spec.security | string, optional | Establezca |
|
spec.security | string, required | Especifique la asignación que asigna el nombre de usuario proporcionado a Para obtener más información, consulte security.ldap.userToDNMapping y Plantillas de consulta LDAP en la documentación del servidor MongoDB. |
|
spec.security | string, required | Establezca en |
|
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.
Configure los ajustes LDAP para el Agente MongoDB.
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
Guarde el archivo de configuración del conjunto de réplicas.
Aplique sus cambios a la implementación de su conjunto de réplicas.
Invoque el siguiente comando de Kubernetes para actualizar su conjunto de réplicas:
kubectl apply -f <replica-set-conf>.yaml
Realice un seguimiento del estado de su implementación.
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.
Configurar la autenticación del cliente LDAP para un clúster fragmentado
Copia el clúster recurso.
Cambie la configuración de este archivo YAML para que coincida con la configuración de clúster fragmentado deseada.
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 ...
Pegue la sección de ejemplo copiada en su recurso de clúster fragmentado existente.
Abre el editor de texto de preferencia y pega la especificación del objeto al final del archivo recurso, en la sección spec.
Configure los ajustes LDAP para su recurso de clúster fragmentado.
Para habilitar LDAP en su implementación, configure las siguientes opciones en su objeto de Kubernetes:
Clave | Tipo y necesidad | Descripción | Ejemplo |
|---|---|---|---|
spec.security | boolean, required | Establezca en |
|
spec.security | string, required | Especifique el nombre distinguido LDAP al que MongoDB se vincula cuando se conecta al servidor LDAP. |
|
spec.security | 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. |
|
spec.security | string, optional | Agregue el nombre de ConfigMap que almacena la CA personalizada que utilizó para firmar los certificados TLS de su implementación. |
|
spec.security | string, optional | Agregue el nombre del campo que almacena la CA que valida el certificado TLS del servidor LDAP. |
|
spec.security | array of strings, required | Especifique la lista de |
|
spec.security | string, optional | Establezca |
|
spec.security | string, required | Especifique la asignación que asigna el nombre de usuario proporcionado a Para obtener más información, consulte security.ldap.userToDNMapping y Plantillas de consulta LDAP en la documentación del servidor MongoDB. |
|
spec.security | string, required | Establezca en |
|
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.
Configure los ajustes LDAP para el Agente MongoDB.
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
Guarde el archivo de configuración del clúster fragmentado.
Aplique sus cambios a su implementación de clúster fragmentado.
Invoque el siguiente comando de Kubernetes para actualizar su clúster fragmentado:
kubectl apply -f <sharded-cluster-conf>.yaml
Realice un seguimiento del estado de su implementación.
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.