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.
Requisitos previos
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.
Procedimiento
Primero, cree el certificado de cliente. Luego, crea un usuario de MongoDB y conéctate a la implementación habilitada para X.509.
Genere un certificado de cliente X.509.
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.
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ás implementando un recurso de Ops Manager en una implementación de MongoDB multidispositivo en clústeres de Kubernetes:
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>
Copia y guarda el siguiente ejemplo ConfigMap.
Guarda el siguiente ConfigMap como x509-mongodb-user.yaml:
1 --- 2 apiVersion: mongodb.com/v1 3 kind: MongoDBUser 4 metadata: 5 name: new-x509-user 6 spec: 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.
Encuentra la ubicación de montaje del CA.
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
Utiliza tu usuario X.509 para conectar a la implementación de MongoDB
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'