El operador de Kubernetes admite la administración de usuarios de bases de datos para implementaciones que se ejecutan con TLS y la autenticación interna del clúster X.509 están habilitadas.
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 Gerente de operaciones para:
Configura otros mecanismos de autenticación para las implementaciones.
Gestiona usuarios que no utilizan autenticación SCRAM, LDAP o X.509.
Después de habilitar la autenticación X.509, puedes añadir usuarios X.509 usando la interfaz de Ops Manager o la Definición de recurso personalizado.
Requisitos previos
Antes de gestionar los usuarios de la base de datos, debes implementar un conjunto 509 de réplicas o clúster fragmentado con TLS y X. habilitados.
Si necesita generar certificados X.509 para los usuarios de su MongoDB, consulte Generar certificados de cliente X.509.
Agregar un usuario de base de datos
Configurar kubectl para establecer su namespace por defecto.
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á implementando un recurso de Ops Manager en una implementación de MongoDB de un clúster de Kubernetes múltiple:
Defina
contextcomo el nombre del clúster operador, 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 CustomResourceDefinition.
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: name: <resource-name> spec: username: <rfc2253-subject> db: "$external" mongodbResourceRef: name: '<MongoDB-Resource-name>' roles: - db: <database-name> name: <role-name> ...
Abre tu editor de texto preferido y pega el ejemplo CustomResourceDefinition en un nuevo archivo de texto.
Cambie las líneas de los siguientes parámetros, según sea necesario.
Utiliza la siguiente tabla para guiarte a través de los cambios en las líneas relevantes en la Especificación de recursos de usuario de MongoDB:
Clave | Tipo | Descripción | Ejemplo | |||
|---|---|---|---|---|---|---|
| string | El nombre del recurso de usuario de la base de datos. Los nombres de recursos deben tener 44 caracteres o menos. |
| |||
| string | La línea de asunto del certificado de cliente x509 firmado por la CA de Kubernetes (Kube CA). IMPORTANTE: El nombre de usuario debe cumplir con la norma RFC 2253 estándar de nombre distinguido LDAPv3. Para obtener la línea de asunto del certificado X.509, ejecute el siguiente comando: |
| |||
| string | El nombre del proyecto que contiene la base de datos MongoDB donde se agregará el usuario. La configuración |
| |||
| string | La base de datos sobre la que puede actuar el rol. |
| |||
| string | El nombre del recurso de MongoDB al que está asociado este usuario. |
| |||
| string | El nombre del rol que se otorgará al usuario de la base de datos. El nombre del rol puede ser cualquier rol integrado de MongoDB o un rol personalizado existente en Cloud Manager u Ops Manager. |
|
Agregue cualquier rol adicional para el usuario a la CustomResourceDefinition.
Puede otorgar roles adicionales a este usuario utilizando el formato definido en el siguiente ejemplo:
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: name: mms-user-1 spec: username: CN=mms-user,U=My Organizational Unit,O=My Org,L=New York,ST=New York,C=US project: my-project db: "$external" roles: - db: admin name: backup - db: admin name: restore ...
Crea el usuario.
Invoca el siguiente comando de Kubernetes para crear tu usuario de base de datos:
kubectl apply -f <database-user-conf>.yaml
Cuando creas un nuevo usuario de base de datos de MongoDB, el Operador de Kubernetes crea automáticamente un nuevo secreto de Kubernetes. El secreto de Kubernetes contiene la siguiente información sobre el nuevo usuario de la base de datos:
username: Nombre de usuario para el usuario de base de datospassword: Contraseña para el usuario de base de datosconnectionString.standard: Cadena de conexión estándar que puede conectarlo a la base de datos como este usuario de base de datos.connectionString.standardSrv:Cadena de conexión de la lista desemillas DNS que puede conectarlo a la base de datos como este usuario de base de datos.
Nota
Alternativamente, puedes especificar un campo opcional spec.connectionStringSecretName en la Especificación de Recurso de Usuario de MongoDB para indicar el nombre del secreto de la cadena de conexión que el operador de Kubernetes crea.
Puede utilizar estas credenciales para conectarse a un recurso de base de datos MongoDB desde dentro de Kubernetes.
Eliminar un usuario de base de datos
Para borrar un usuario de base de datos, pasa el metadata.name del usuario ConfigMap al siguiente comando:
kubectl delete mdbu <metadata.name>