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
Para automatizar la renovación de certificados para las implementaciones de Ops Manager, considere configurar la integración de 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 509 autenticación TLS y X..
Para completar este tutorial, debe tener instalado el operador de controladores de MongoDB para Kubernetes. Para obtener instrucciones sobre cómo instalar el operador de Kubernetes, consulte Instalar el operador de controladores de MongoDB para Kubernetes.
Este tutorial asume que tiene una implementación de MongoDB que requiere509 autenticación X.. 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, cree un usuario de MongoDB y conéctese a la implementación con X.509habilitado.
Generar un certificado de cliente X.509.
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.
Configure para kubectl que el valor predeterminado sea su espacio de nombres.
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
contexten el nombre del clúster del operador, como por ejemplo:kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME".Establezca
--namespaceen 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>
Copie y guarde 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 .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.
Encuentre la ubicación de montaje de la CA.
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
Utilice su usuario X.509 para conectarse 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'