El operador de controladores de MongoDB para Kubernetes puede implementar instancias de MongoDB con autenticación X.509 habilitada. Si se ha habilitado la autenticación X.509 para la implementación, debe generar y usar un certificado X.509 para conectarse a la implementación. Este nuevo certificado de cliente debe estar firmado por la misma CA que firma los certificados de servidor para que la implementación de MongoDB lo 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 secreto, 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
Debe concatenar el certificado TLS de tu cliente y la clave del certificado en un archivo .pem. Debe presentar este archivo .pem cuando se conecte a su implementación de MongoDB habilitado para 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 sea la opción por defecto en tu namespace.
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'