Docs Menu
Docs Home
/ /
/ / /

Administrar usuarios de bases de datos mediante autenticación SCRAM

El operador de Kubernetes admite la gestión de usuarios de bases de datos mediante la autenticación SCRAM en implementaciones de MongoDB.

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

SCRAM-SHA-1

4.0 o posterior

Cualquiera excepto la base de datos de la aplicación

SCRAM-SHA-256

Any

Base de datos de la aplicación

SCRAM-SHA-1

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 CustomResourceDefinition según la Especificación de recursos de usuario de MongoDB.

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.

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.

1

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 context en el nombre del clúster del operador, como por ejemplo: kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME".

  • Establezca --namespace en 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>
2

Puede optar por utilizar una contraseña de texto sin cifrar:

1---
2apiVersion: v1
3kind: Secret
4metadata:
5 name: <mms-user-1-password>
6 # corresponds to user.spec.passwordSecretKeyRef.name
7type: Opaque
8stringData:
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---
2apiVersion: v1
3kind: Secret
4metadata:
5 name: <mms-user-1-password>
6 # corresponds to user.spec.passwordSecretKeyRef.name
7type: Opaque
8data:
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.

3
  1. Abra su editor de texto preferido.

  2. 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.

4

Utilice la siguiente tabla como guía para cambiar las líneas resaltadas en el Secreto:

Clave
Tipo
Descripción
Ejemplo

metadata.name

string

Nombre de la contraseña secreta de la base de datos.

Los nombres de recursos deben tener 44 caracteres o menos.

mms-scram-user-1-password

stringData.password

string

Contraseña de texto simple para el usuario deseado.

Utilice esta opción y el data.password valor. No se pueden usar ambos.

<my-plain-text-password>

data.password

string

Contraseña codificada en base64para el usuario deseado.

Utilice esta opción y el stringData.password valor. No se pueden usar ambos.

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.

<my-base64-encoded-password>

5
1
---
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"
...
2
  1. Abra su editor de texto preferido.

  2. Pegue este MongoDBUser en un nuevo archivo YAML.

3

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

metadata.name

string

Nombre del recurso de usuario de la base de datos.

Los nombres de recursos deben tener 44 caracteres o menos.

mms-scram-user-1

spec.username

string

Nombre del usuario de base de datos.

mms-scram-user-1

spec.passwordSecretKeyRef.name

string

metadata.name valor del secreto que almacena la contraseña del usuario.

my-resource

spec.mongodbResourceRef.name

string

Nombre del recurso MongoDB con el que está asociado este usuario.

my-resource

spec.roles.db

string

Base de datos sobre la que puede actuar el rol.

admin

spec.roles.name

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.

readWriteAnyDatabase

4

Puede otorgar roles adicionales a este usuario.

5
6

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:

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.

7

Puede ver el usuario recién creado en Cloud Manager o Ops Manager:

  1. Desde la vista Deployment del Proyecto, haga clic en la pestaña Security.

  2. Haga clic en la pestaña anidada MongoDB Users.

Para eliminar un usuario de la base de datos, pase el metadata.name del usuario MongoDBUser al siguiente comando:

kubectl delete mdbu <metadata.name>

Para cambiar su mecanismo de autenticación de usuario a SCRAM:

  1. Deshabilitar la autenticación.

    En spec.security.authentication, cambia enabled a false.

    spec:
    security:
    authentication:
    enabled : false
  2. Vuelva a aplicar la definición de recurso del usuario.

  3. Espere a que MongoDBResource alcance el estado running.

  4. Habilitar la autenticación SCRAM.

    spec.security.authenticationEn, cambie enabled a true y establezca en `` spec.security.authentication.modes ["SCRAM"]``.

    spec:
    security:
    authentication:
    enabled : true
    modes: ["SCRAM"]
  5. Vuelva a aplicar el recurso MongoDBUser.

  6. Espere a que MongoDBResource alcance el estado running.

En esta página