Docs Menu
Docs Home
/ /
/ / /

Generar certificados de cliente X.509

El operador de controladores MongoDB para Kubernetes puede implementar instancias de MongoDB con Autenticación X.509 habilitada. Si509 se ha habilitado la autenticación X. para la implementación, debe generar y usar un509 certificado X. para conectarse a la implementación. Este nuevo certificado de cliente debe estar firmado por el mismo CA que firma los certificados del servidor para que la implementación de MongoDB los acepte.

Utilice el procedimiento descrito en este documento para usar un certificado X.509 para conectarse a su implementación de MongoDB habilitada para X.509.

Si está utilizando HashiCorp Vault como su herramienta de almacenamiento secreto, puedes crear una bóveda secreta en su lugar.

Nota

Nota

Una descripción completa de la Seguridad de la Capa de Transporte (TLS), los certificados de Infraestructura de Clave Pública (PKI) y las Autoridades de Certificación queda fuera del alcance de este documento. Esta página presupone conocimientos previos de 509 autenticación TLS y X..

Primero, cree el certificado de cliente. Luego, cree un usuario de MongoDB y conéctese a la implementación con X.509habilitado.

1

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

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

Importante

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

Para conocer las propiedades que deben tener sus certificados de cliente, consulte Requisitos de certificados de cliente en el Manual de MongoDB.

2

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

Guarde 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 .yaml archivo ConfigMap describe un MongoDBUser objeto personalizado. Puede usar estos objetos personalizados para crear usuarios de MongoDB. Para obtener más información, consulte la Especificación de recursos de usuario de MongoDB.

En este ejemplo, ConfigMap describe al usuario como un usuario X.509 que el cliente puede usar 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 de 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 dónde en cada pod el operador de Kubernetes montó el secreto de CA:

kubectl get statefulset <metadata.name> -o yaml

En la salida, busque el montaje secret-ca:

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 se conecte a la implementación de su base de datos, agregue secret-ca a mountPath, 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 mediante MongoDB Shell (mongosh):

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

Volver

Crear un proyecto

En esta página