El operador de Kubernetes admite la gestión de usuarios de bases de datos mediante la autenticación SCRAM en implementaciones de MongoDB.
Considerations
Implementaciones de SCRAM compatibles
Cuando se especifica SCRAM Como mecanismo de autenticación, la implementación de SCRAM utilizada depende de:
La versión de MongoDB y
Si la base de datos es la base de datos de la aplicación u otra base de datos.
Versión de MongoDB | Database | Implementación de SCRAM |
|---|---|---|
3.6 o anterior | Cualquiera excepto la base de datos de la aplicación |
|
4.0 o posterior | Cualquiera excepto la base de datos de la aplicación |
|
Any | Base de datos de la aplicación |
|
Mecanismos de autenticación admitidos
El operador de Kubernetes admite los mecanismos de autenticación SCRAM, LDAP 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:
Configurar 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 SCRAM, puede agregar usuarios SCRAM mediante la interfaz de Ops Manager o configurando los usuarios en CustomResourceDefinitionbasado en la especificación de recursos de usuario de MongoDB.
Requisitos previos
Antes de administrar usuarios de la base de datos, debe implementar un conjunto de réplicasindependiente oun clúster fragmentado.
Para implementaciones de MongoDB con varios clústeres de Kubernetes, debe implementar conjuntos de réplicas. Consulte Implementar varios clústeres.
Agregar un usuario de base de datos
Importante
No se puede asignar el mismo usuario de base de datos a más de un clúster independiente, de réplicas o fragmentado de MongoDB. Esto incluye usuarios de base de datos con admin roles.
Crear secreto de usuario
Configure para kubectl que el valor predeterminado sea su espacio de nombres.
Si aún no lo ha hecho, ejecute el siguiente comando para ejecutar todos los kubectl comandos en el espacio de nombres 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:
Establezca
contexten el nombre del clúster del operador, como por ejemplo:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME".Establezca
--namespaceen el mismo ámbito que utilizó para su implementación de MongoDB en un clúster de Kubernetes múltiple, como porkubectl config --namespace "mongodb"ejemplo:.
kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
Copie el siguiente ejemplo secreto.
Puede optar por utilizar una contraseña de texto sin cifrar:
1 2 apiVersion: v1 3 kind: Secret 4 metadata: 5 name: <mms-user-1-password> 6 # corresponds to user.spec.passwordSecretKeyRef.name 7 type: Opaque 8 stringData: 9 password: <my-plain-text-password> 10 # corresponds to user.spec.passwordSecretKeyRef.key 11 ...
o puede optar por utilizar una contraseña codificada en Base64:
1 2 apiVersion: v1 3 kind: Secret 4 metadata: 5 name: <mms-user-1-password> 6 # corresponds to user.spec.passwordSecretKeyRef.name 7 type: Opaque 8 data: 9 password: <base-64-encoded-password> 10 # corresponds to user.spec.passwordSecretKeyRef.key 11 ...
Nota
Asegúrese de copiar la configuración de contraseña deseada. Las contraseñas de texto simple usan stringData.password y las contraseñas codificadas en base64usan data.password.
Cree un nuevo archivo YAML de secreto de usuario.
Abra su editor de texto preferido.
Pegue este secreto de usuario en un nuevo archivo de texto.
Si utilizas HashiCorp Vault como tu herramienta de almacenamiento secreto, puedes crear un secreto de Vault en su lugar.
Para conocer más sobre sus opciones de almacenamiento secreto,consulte Configurar almacenamiento secreto.
Cambiar las líneas resaltadas.
Utilice la siguiente tabla como guía para cambiar las líneas resaltadas en el Secreto:
Clave | Tipo | Descripción | Ejemplo |
|---|---|---|---|
| string | Nombre de la contraseña secreta de la base de datos. Los nombres de recursos deben tener 44 caracteres o menos. |
|
| string | Contraseña de texto simple para el usuario deseado. Utilice esta opción y el |
|
| string | Contraseña codificada en base64para el usuario deseado. Utilice esta opción y el Debes codificar tu contraseña en Base64 y luego pegar el valor resultante con esta opción. Existen herramientas para casi todas las plataformas y también para múltiples herramientas web. |
|
Crear usuario MongoDB
Copie el siguiente ejemplo de MongoDBUser.
apiVersion: mongodb.com/v1 kind: MongoDBUser metadata: name: <mms-scram-user-1> spec: passwordSecretKeyRef: name: <mms-user-1-password> # Match to metadata.name of the User Secret key: password username: "<mms-scram-user-1>" db: "admin" # mongodbResourceRef: name: "<my-replica-set>" # Match to MongoDB resource using authentication roles: - db: "admin" name: "clusterAdmin" - db: "admin" name: "userAdminAnyDatabase" - db: "admin" name: "readWrite" ...
Cambiar las líneas resaltadas.
Utilice la siguiente tabla como guía para cambiar las líneas resaltadas en la Especificación de recursos de usuario de MongoDB:
Clave | Tipo | Descripción | Ejemplo |
|---|---|---|---|
| string | Nombre del recurso de usuario de la base de datos. Los nombres de recursos deben tener 44 caracteres o menos. |
|
| string | Nombre del usuario de base de datos. |
|
| string |
|
|
| string | Nombre del recurso MongoDB con el que está asociado este usuario. |
|
| string |
| |
| string | 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. |
|
Crear el usuario.
Invoque el siguiente comando de Kubernetes para crear su usuario de base de datos:
kubectl apply -f <database-user-conf>.yaml
Al crear un nuevo usuario de base de datos MongoDB, el operador de Kubernetes crea automáticamente un nuevo secreto de Kubernetes. Este secreto contiene la siguiente información sobre el nuevo usuario de base de datos:
username: Nombre de usuario para el usuario de la base de datospassword: Contraseña para el usuario de la base de datosconnectionString.standard:Cadenade 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
Como alternativa, puede especificar un spec.connectionStringSecretName campo opcional en la Especificación de recursos de usuario de MongoDB para especificar el nombre del secreto de la cadena de conexión que crea el operador de Kubernetes.
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 eliminar un usuario de la base de datos, pase el metadata.name del usuario MongoDBUser al siguiente comando:
kubectl delete mdbu <metadata.name>
Cambiar el mecanismo de autenticación
Para cambiar su mecanismo de autenticación de usuario a SCRAM:
Deshabilitar la autenticación.
En
spec.security.authentication, cambiaenabledafalse.spec: security: authentication: enabled : false Vuelva a aplicar la definición de recurso del usuario.
Espere a que MongoDBResource alcance el estado
running.Habilitar la autenticación SCRAM.
spec.security.authenticationEn, cambieenabledatruey establezca en ``spec.security.authentication.modes["SCRAM"]``.spec: security: authentication: enabled : true modes: ["SCRAM"] Vuelva a aplicar el recurso MongoDBUser.
Espere a que MongoDBResource alcance el estado
running.