Esta guía le instruye sobre cómo configurar:
X.509 autenticación interna entre nodos MongoDB en cada clúster en tus implementaciones de MongoDB de clústeres multi-Kubernetes.
Autenticación X.509 de los clientes a sus instancias de MongoDB.
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 el Requisitos previos de inicio rápido de varios clústeres.
Implementa un multi-clúster de Kubernetes cifrado con TLS.
Crea credenciales 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.
Configurar la autenticación interna 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>
Crea el secreto para el certificado X.509 interno del clúster nodo.
Ejecute el comando kubectl para crear un nuevo secreto que almacene el certificado X.509 del nodo interno del clúster. Los nodos clústeres se definen en tu 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>
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. Agrega la configuración internalCluster, debajo de spec.authentication, y configúrala en "X509". La configuración resultante puede parecerse 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: 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 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
Renueve los certificados X.509 de autenticación interna para un recurso MongoDBMultiCluster
Si ya ha creado certificados, renuévelos periódicamente mediante 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 -
Renueva el secreto para los certificados X.509 de los miembros internos del recurso MongoDBMultiCluster.
Ejecuta el comando kubectl para renovar un secreto existente que almacena certificados X.509 para nodos 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 -