Puedes configurar el operador de Kubernetes para utilizar certificados X.509 para autenticar tus aplicación cliente en una implementación de MongoDB multi-Kubernetes clúster.
Para proteger tu implementación de MongoDB en clústeres múltiples de Kubernetes con certificados X.509, debes ejecutar todas las acciones en el clúster del operador. El operador de Kubernetes propaga la configuración X.509 a cada clúster nodo y actualiza la configuración del operador de Kubernetes en cada clúster nodo.
Requisitos previos
Antes de asegurar la implementación de MongoDB en un clúster de multi-Kubernetes usando CifradoTLS, complete las siguientes tareas:
Siga los pasos en los requisitos previos de inicio rápido de múltiples clústeres.
Implementa un multi-clúster cifrado con TLS.
Cree credenciales para el Operador de Kubernetes para el Operador de Kubernetes.
Habilitar la autenticación X.509 a nivel de Proyecto configura a todos los agentes para que utilicen autenticación de cliente X.509 cuando se comuniquen con implementaciones de MongoDB.
La autenticación del cliente X.509 requiere uno de los siguientes:
Cloud Manager
La versión del Ops Manager es compatible con tu versión del Operador de Kubernetes.
Habilitar la autenticación X.509 para un recurso MongoDBMultiCluster
Crea el secreto para el certificado X.509 de tu agente de tu MongoDBMultiCluster resource.
Ejecute el comando kubectl para crear un nuevo secreto que almacene el certificado X.509 del agente:
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-agent-certs \ --cert=<agent-tls-cert> \ --key=<agent-tls-key>
Actualiza tu recurso MongoDBMultiCluster para habilitar la autenticación X509.
Actualice su recurso personalizado MongoDBMultiCluster con configuraciones de seguridad del Operador de Kubernetes Especificación de recursos MongoDBMultiCluster. La configuración resultante puede tener una apariencia similar al siguiente ejemplo:
apiVersion: mongodb.com/v1 kind: MongoDBMultiCluster metadata: name: multi-replica-set spec: version: 8.0.0 type: ReplicaSet persistent: false duplicateServiceObjects: true credentials: my-credentials opsManager: configMapRef: name: my-project security: tls: ca: custom-ca certsSecretPrefix: <prefix> authentication: enabled: true modes: ["X509"] agents: mode: "X509" clusterSpecList: - clusterName: ${MDB_CLUSTER_1_FULL_NAME} members: 3 - clusterName: ${MDB_CLUSTER_2_FULL_NAME} members: 2 - clusterName: ${MDB_CLUSTER_3_FULL_NAME} members: 3 The |k8s-op-short| copies the ConfigMap with the |certauth| created in the operator cluster to each member cluster, generates a concatenated |pem| secret, and distributes it to the member clusters.
Verifique que los recursos MongoDBMultiCluster estén en ejecución.
Para clústeres nodos, ejecuta los siguientes comandos para verificar que los Pods de MongoDB estén en estado en ejecución:
kubectl get pods \ --context=$MDB_CLUSTER_1_FULL_NAME \ --namespace mongodb kubectl get pods \ --context=$MDB_CLUSTER_2_FULL_NAME \ --namespace mongodb kubectl get pods \ --context=$MDB_CLUSTER_3_FULL_NAME \ --namespace mongodb En el clúster del operador, ejecuta el siguiente comando para verificar que el recurso
MongoDBMultiClusterse encuentre en estado activo:kubectl --context=$MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace mongodb \ get mdbmc multi-replica-set -o yaml -w
Renueva certificados X.509 para un recurso MongoDBMultiCluster
Si ya se han creado certificados X.509, renovarlos periódicamente utilizando el siguiente procedimiento.
Renovar el secreto para un recurso MongoDBMultiCluster.
Ejecuta este comando kubectl para renovar un secreto existente que almacena los certificados para el recurso MongoDBMultiCluster:
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-cert \ --cert=<resource-tls-cert> \ --key=<resource-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -
Renueva el secreto de los certificados X.509 de tu agente.
Ejecute el comando kubectl para renovar un secreto existente que almacena los certificados del agente de recursos MongoDBMultiCluster:
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-agent-certs \ --cert=<agent-tls-cert> \ --key=<agent-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -