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
/ /
/ / /

Generar certificados de cliente X.509

Los controladores de MongoDB para Kubernetes operador pueden implementar instancias de MongoDB con X.509 autenticación habilitada. Si se ha habilitado la autenticación X.509 para la implementación, debes generar y utilizar un certificado X.509 para conectarte a la implementación. Este nuevo certificado de cliente debe ser firmado por el mismo CA que firma los certificados del servidor para que la implementación MongoDB los acepte.

Utiliza el procedimiento descrito en este documento para utilizar un certificado X.509 para conectarte a tu implementación de MongoDB habilitada para X.509.

Si utilizas HashiCorp Vault como tu herramienta de almacenamiento secreta, puedes crear un secreto de Vault en su lugar.

Nota

Para automatizar la renovación de certificados para las implementaciones de Ops Manager, considera configurar la integración cert-manager.

Nota

Una descripción completa de Transport Layer Security (TLS), certificados de infraestructura de llave pública (PKI) y Certificate Authorities está fuera del alcance de este documento. Esta página asume conocimientos previos de TLS y autenticación X.509.

  • Para completar este tutorial, debes tener instalados los Controladores de MongoDB para el Operador de Kubernetes. Para obtener instrucciones sobre cómo instalar el Kubernetes operador, consulte Instale los controladores MongoDB para Kubernetes operador.

  • Este tutotial asume que tienes una implementación MongoDB que requiere autenticación X.509. Para obtener instrucciones sobre cómo implementar recursos de MongoDB, consulta Implementar un recurso de base de datos de MongoDB.

Primero, cree el certificado de cliente. Luego, crea un usuario de MongoDB y conéctate a la implementación habilitada para X.509.

1

Para uso en producción, tu implementación de MongoDB debe usar certificados válidos generados y firmados por una CA. Usted o su organización pueden generar y mantener un CA independiente usando herramientas nativas de Kubernetes como cert-manager.

La obtención y gestión de certificados está fuera del alcance de esta documentación.

Importante

Debes concatenar el certificado TLS de tu cliente TLS y la clave del certificado en un .pem archivo. Debe presentar este archivo .pem cuando se conecte a su implementación de MongoDB habilitada con X.509.

Para conocer las propiedades que deben tener tus certificados de cliente, consulta Requisitos del certificado de cliente en el Manual de MongoDB.

2

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ás implementando un recurso de Ops Manager en una implementación de MongoDB multidispositivo en clústeres de Kubernetes:

  • 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>
3

Guarda el siguiente ConfigMap como x509-mongodb-user.yaml:

1---
2apiVersion: mongodb.com/v1
3kind: MongoDBUser
4metadata:
5 name: new-x509-user
6spec:
7 username: "CN=my-x509-authenticated-user,OU=organizationalunit,O=organization"
8 db: "$external"
9 mongodbResourceRef:
10 name: '<name of the MongoDB resource>'
11 roles:
12 - db: "admin"
13 name: "readWriteAnyDatabase"

Este archivo ConfigMap .yaml describe un objeto personalizado MongoDBUser. Se pueden utilizar estos objetos personalizados para crear usuarios de MongoDB. Para obtener más información, consulte Especificación de recursos de usuario de MongoDB.

En este ejemplo, el ConfigMap describe al usuario como un usuario X.509 que el cliente puede utilizar para conectarse a MongoDB con el certificado X.509 correspondiente.

4

Ejecuta el siguiente comando para aplicar el ConfigMap y crear el usuario MongoDB de X.509:

kubectl apply -f x509-mongodb-user.yaml

Deberías ver un resultado similar al siguiente:

mongodbuser.mongodb.com/new-x509-user created
5

Ejecute el siguiente comando para comprobar el estado del new-x509-user:

kubectl get mdbu/new-x509-user -o yaml

Deberías ver un resultado similar al siguiente:

NAME CREATED AT
new-x509-user 8m
6

Ejecute el siguiente comando para encontrar en cada pod donde el Operador de Kubernetes ha montado el secreto de CA:

kubectl get statefulset <metadata.name> -o yaml

En la salida, encuentra el secret-ca montaje:

volumeMounts:
- mountPath: /opt/scripts
name: database-scripts
readOnly: true
- mountPath: /var/lib/mongodb-automation/secrets/ca
name: secret-ca
readOnly: true
- mountPath: /var/lib/mongodb-automation/secrets/certs
name: secret-certs
readOnly: true

En el siguiente paso, cuando te conectes a tu implementación de la base de datos, agrega secret-ca al mountPath, lo que forma la ruta completa:

/var/lib/mongodb-automation/secrets/ca/secret-ca
7

Una vez que haya creado su usuario X.509, intente conectarse a la implementación utilizando el MongoDB Shell (mongosh):

mongosh --host {host} --port {port} --tls \
--tlsCAFile </path/to/secret-ca> \
--tlsCertificateKeyFile <your-cert>.pem \
--authenticationMechanism MONGODB-X509 \
--authenticationDatabase '$external'
mongosh --host {host} --port {port} --ssl \
--sslCAFile </path/to/secret-ca> \
--sslPEMKeyFile <your-cert>.pem \
--authenticationMechanism MONGODB-X509 \
--authenticationDatabase '$external'

Volver

Crear un proyecto

En esta página