Join us at MongoDB.local London on 7 May to unlock new possibilities for your data. Use WEB50 to save 50%.
Register now >
Docs Menu
Docs Home
/ /
/ / /

Configura la autenticación interna de varios clústeres (X.509)

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.

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.

1

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>
2

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>
3

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.
4
  1. 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
  2. En el clúster del operador, ejecuta el siguiente comando para verificar que el recurso MongoDBMultiCluster se encuentre en estado activo:

    kubectl --context=$MDB_CENTRAL_CLUSTER_FULL_NAME \
    --namespace mongodb \
    get mdbmc multi-replica-set -o yaml -w

Si ya ha creado certificados, renuévelos periódicamente mediante el siguiente procedimiento.

1

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 -
2

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 -
3

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 -

Volver

Utilice X.509