Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
/ / /

Gestionar usuarios de bases de datos utilizando autenticación SCRAM

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

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

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

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.

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.

1

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

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

Puede optar por utilizar una contraseña en texto claro:

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 puedes elegir usar 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 en texto sin formato usan stringData.password y las contraseñas codificadas en Base64 usan data.password

3
  1. Abre tu 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 sus opciones para el almacenamiento de secretos, consulte Configurar almacenamiento de secretos.

4

Utiliza la siguiente tabla como guía para modificar las líneas resaltadas en el secreto:

Clave
Tipo
Descripción
Ejemplo

metadata.name

string

Nombre del secreto de la contraseña 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 en texto plano 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 Base64 para el usuario deseado.

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

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.

<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. Abre tu editor de texto preferido.

  2. Pega 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 de MongoDB con el que está asociado este usuario.

my-resource

spec.roles.db

string

Base de datos en la que el rol puede actuar.

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

Puedes otorgar roles adicionales a este usuario.

5
6

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:

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.

7

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

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

  2. Haz 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 modificar tu 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. Volver a aplicar la definición de recursos del usuario.

  3. Espera 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. Espera a que MongoDBResource alcance el estado running.

En esta página