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 utilizar 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 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 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 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 tutorial asume que tiene una implementación de MongoDB que requiere autenticación X.509. Para obtener instrucciones sobre cómo implementar recursos de MongoDB, consulte 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.
Generar 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á implementando un recurso de Ops Manager en una implementación de MongoDB de un clúster de Kubernetes múltiple:
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.
Guarde 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, ConfigMap describe al usuario como un usuario X.509 que el cliente puede usar para conectarse a MongoDB con el certificado X.509 correspondiente.
Encuentre la ubicación de montaje de la 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, 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
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 mediante 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'