El operador de Kubernetes admite la gestión de usuarios de bases de datos utilizando la autenticación SCRAM en implementaciones de MongoDB.
Considerations
Implementaciones SCRAM admitidas
Cuando se especifica SCRAM ya que el 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 |
|---|---|---|
7,0 o superior | 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, 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 SCRAM, puedes agregar usuarios SCRAM utilizando la interfaz de Ops Manager o configurando los usuarios en el CustomResourceDefinition según la Especificación del Recurso 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 en múltiples clústeres de Kubernetes, debes implementar sets de réplicas. Consulta Implementar varios clústeres.
Agregar un usuario de base de datos
Importante
No puedes asignar el mismo usuario de base de datos a más de un MongoDB autónomo, un set de réplicas o un clúster. Esto incluye usuarios de base de datos con admin rol.
Crear secreto de usuario
Configura kubectl para que se ajuste por defecto a tu espacio de nombres.
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 secreto.
Puede optar por utilizar una contraseña en texto claro:
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 puedes elegir usar 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 en texto sin formato usan stringData.password y las contraseñas codificadas en Base64 usan data.password
Crea un nuevo archivo YAML de usuario secreto.
Abre tu 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 sus opciones para el almacenamiento de secretos, consulte Configurar almacenamiento de secretos.
Cambiar las líneas resaltadas.
Utiliza la siguiente tabla como guía para modificar las líneas resaltadas en el secreto:
Clave | Tipo | Descripción | Ejemplo |
|---|---|---|---|
| string | Nombre del secreto de la contraseña de la base de datos. Los nombres de recursos deben tener 44 caracteres o menos. |
|
| string | Contraseña en texto plano para el usuario deseado. Utilice esta opción y el |
|
| string | Contraseña codificada en Base64 para el usuario deseado. Utilice esta opción y el Debe codificar su contraseña en Base64 usted mismo y luego pegar el valor resultante con esta opción. Existen herramientas para la mayoría de las plataformas y también múltiples herramientas basadas en la web. |
|
Crear MongoDBUser
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 de MongoDB con el que está asociado este usuario. |
|
| string | Base de datos en la que el rol puede actuar. |
|
| 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. |
|
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 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 modificar tu mecanismo de autenticación de usuario a SCRAM:
Deshabilitar la autenticación.
En
spec.security.authentication, cambiaenabledafalse.spec: security: authentication: enabled : false Volver a aplicar la definición de recursos del usuario.
Espera 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.
Espera a que MongoDBResource alcance el estado
running.