Esta guía le indica cómo configurar:
X.509 autenticación interna entre los nodos MongoDB en cada clúster en sus implementaciones MongoDB de clústeres multi-Kubernetes.
Autenticación X.509 de los clientes a sus instancias de MongoDB.
Requisitos previos
Antes de proteger su implementación de MongoDB en un clúster multi-Kubernetes mediante CifradoTLS, complete las siguientes tareas:
Siga los pasos de la Requisitos previos de inicio rápido de varios clústeres.
Implemente un clúster multi-Kubernetes cifrado con TLS.
Cree credenciales para el operador de Kubernetes.
Al habilitar la autenticación X.509 en el nivel del proyecto, se configuran todos los agentes para usar la autenticación de cliente X.509 cuando se comunican 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.
Configurar la autenticación interna X.509 para un recurso MongoDBMultiCluster
Cree el secreto para el certificado X.509 de su agente 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>
Cree el secreto para el certificado X.509 interno del clúster miembro.
Ejecute el comando kubectl para crear un nuevo secreto que almacene el certificado X.509 del miembro del clúster interno. Los clústeres miembros se definen en su recurso MongoDBMultiCluster.
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-clusterfile \ --cert=<resource-clusterfile-tls-cert> \ --key=<resource-clusterfile-tls-key>
Actualice su MongoDBMultiCluster recurso para habilitar la509 autenticaciónX.
Actualicesu recurso personalizado MongoDBMultiCluster con la configuración de seguridad de la especificación del recurso MongoDBMultiCluster del operador de Kubernetes. Añada la configuración, internalCluster spec.authenticationen, y establézcala "X509" en. La configuración resultante podría ser similar a la del 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: a: custom-ca certsSecretPrefix: <prefix> authentication: enabled: true modes: ["X509"] agents: mode: "X509" internalCluster: "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 MongoDBMultiCluster recursos estén ejecutándose.
Para los clústeres de miembros, ejecute los siguientes comandos para verificar que los pods de MongoDB estén en estado de 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, ejecute el siguiente comando para verificar que el recurso
MongoDBMultiClusteresté en estado de ejecución:kubectl --context=$MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace mongodb \ get mdbmc multi-replica-set -o yaml -w
Renovar certificados de autenticación interna X.509 para un recurso MongoDBMultiCluster
Si ya ha creado certificados, renuévelos periódicamente mediante el siguiente procedimiento.
Renovar el secreto para un MongoDBMultiCluster recurso.
Ejecute este kubectl comando para renovar un secreto existente que almacena los certificados para el MongoDBMultiCluster recurso:
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 -
Renueve el secreto de los certificados X.509 de su 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 -
Renueva el secreto para los certificados X.509 de los miembros internos del recurso MongoDBMultiCluster.
Ejecute el comando kubectl para renovar un secreto existente que almacena certificados X.509 para miembros internos del recurso MongoDBMultiCluster:
kubectl --context $MDB_CENTRAL_CLUSTER_FULL_NAME \ --namespace=<metadata.namespace> \ create secret tls <prefix>-<metadata.name>-clusterfile \ --cert=<resource-clusterfile-tls-cert> \ --key=<resource-clusterfile-tls-key> \ --dry-run=client \ -o yaml | kubectl apply -f -