El operador de Kubernetes admite la gestión de usuarios de bases de datos para implementaciones que se ejecutan con la autenticación de clúster TLS y LDAP habilitada.
Considerations
La configuración para los usuarios autenticados a través de LDAP se basa en las plantillas de consulta LDAP y en las asignaciones que establece MongoDB.
Para aprender más, consulta las siguientes secciones en la documentación de MongoDB Server:
Mecanismos de autenticación admitidos
El operador de Kubernetes admite los mecanismos de autenticación SCRAM, LDAP, OpenID Connect y X.509 en las implementaciones que crea. En una implementación creada por el operador de Kubernetes, no se puede usar Ops Manager para:
Configura otros mecanismos de autenticación para las implementaciones.
Gestiona usuarios que no utilizan autenticación SCRAM, LDAP o X.509.
Requisitos previos
Antes de administrar los usuarios de la base de datos, debe implementar un conjunto de réplicas o un clúster fragmentado con LDAP habilitado. Opcionalmente, puede habilitar TLS. Para obtener más información, consulte la sección "Proteger un recurso de base de datos".
Agregar un usuario de base de datos
Configura kubectl para que sea por defecto en tu namespace.
Si aún no lo ha hecho, ejecute el siguiente comando para ejecutar todos los comandos de kubectl en el namespace que creó.
Nota
Si estás implementando un recurso de Ops Manager en una implementación de MongoDB multidispositivo en clústeres de Kubernetes:
Establezca
contextcon el nombre del clúster central, por ejemplo:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME".Establece el
--namespaceen el mismo ámbito que utilizaste para tu implementación de MongoDB de clústeres multi-Kubernetes, como por ejemplo:kubectl config --namespace "mongodb".
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
Copie el siguiente ejemplo de CustomResourceDefinition.
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: name: ldap-user-1 spec: username: "uid=mdb0,dc=example,dc=org" db: "$external" mongodbResourceRef: name: ldap-replica-set roles: - db: "admin" name: "clusterAdmin" - db: "admin" name: "readWriteAnyDatabase" - db: "admin" name: "dbAdminAnyDatabase" ...
Abra su editor de texto preferido y pegue el ejemplo CustomResourceDefinition en un nuevo archivo de texto.
Cambia las líneas para los siguientes parámetros, según sea necesario.
Usa la siguiente tabla para guiarte en la modificación de las líneas relevantes en la Especificación de Recursos de Usuarios de MongoDB. Para obtener una lista completa de la configuración de usuarios de LDAP, consulta la configuración de seguridad en la especificación de recursos del operador de Kubernetes MongoDB.
Clave | Tipo | Descripción | Ejemplo |
|---|---|---|---|
| string | El nombre del recurso para el usuario de base de datos de MongoDB. Los nombres de recursos deben tener 44 caracteres o menos. |
|
| string | El nombre de la base de datos MongoDB a la que se añadirán los usuarios. Este valor debe ser |
|
| string | El nombre del recurso de MongoDB al que está asociado este usuario. |
|
| string | El nombre del proyecto que contiene la base de datos MongoDB donde se agregará el usuario. La configuración |
|
| string |
| |
| string | El nombre del rol que se asignará al usuario de la base de datos. El nombre del rol puede ser cualquier rol integrado de MongoDB o un rol personalizado que exista en Cloud Manager u Ops Manager. |
|
| string | El nombre de usuario autenticado que se asigna a un nombre distinguido (DN) LDAP según Para obtener más información, consulte Plantillas de consulta LDAP en el Manual de MongoDB. |
|
Agregue cualquier rol adicional para el usuario a la definición de recurso personalizado.
Puede otorgar roles adicionales a este usuario utilizando el formato definido en el siguiente ejemplo:
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: name: ldap-user-1 spec: username: "uid=mdb0,dc=example,dc=org" db: "$external" mongodbResourceRef: name: ldap-replica-set roles: - db: "admin" name: "clusterAdmin" - db: "admin" name: "readWriteAnyDatabase" - db: "admin" name: "dbAdminAnyDatabase" ...
Crea el usuario.
Invoca el siguiente comando de Kubernetes para crear tu usuario de base de datos:
kubectl apply -f <database-user-conf>.yaml
Los siguientes ejemplos ilustran los formatos de la cadena de conexión que se pueden utilizar al habilitar la autenticación con LDAP en las implementaciones de Kubernetes Operator MongoDB. Estos ejemplos utilizan el namespace mongodb y una implementación de set de réplicas llamada replica-set-ldap. Los ejemplos son similares para clústeres fragmentados.
connectionString.standard:Cadena de conexión estándar que le permite conectarse a la base de datos como este usuario de la base de datos.mongodb://replica-set-ldap-0-0-svc.mongodb.svc.cluster.local/?connectTimeoutMS=20000&replicaSet=replica-set-ldap&serverSelectionTimeoutMS=20000&ssl=true&authSource=$external connectionString.standardSrv: Cadena de conexión de la lista desemillas DNS que puede conectarte a la base de datos como este usuario de la base de datos.mongodb+srv://replica-set-ldap-svc.mongodb.svc.cluster.local/?connectTimeoutMS=20000&replicaSet=replica-set-ldap&serverSelectionTimeoutMS=20000&ssl=true&authSource=$external
Utilizando los formatos mostrados previamente, puedes conectarte a la base de datos MongoDB con MongoDB Shell (mongosh), como se muestra en el siguiente ejemplo:
mongosh <connection-string> \ --host <my-replica-set>/web1.example.com \ --port 30907 \ --authenticationMechanism PLAIN \ --username cn=rob,cn=Users,dc=ldaps-01,dc=myteam,dc=com
Puedes utilizar estas credenciales para conectarte a un recurso de base de datos de MongoDB desde dentro de Kubernetes.
Eliminar un usuario de base de datos
Para eliminar un usuario de la base de datos, pase el valor metadata.name del ConfigMap del usuario al siguiente comando:
kubectl delete mdbu <metadata.name>