Docs Menu
Docs Home
/ /
Conexiones seguras
/ / /

Autenticación interna segura con X.509

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.

Antes de proteger su implementación de MongoDB en un clúster multi-Kubernetes mediante CifradoTLS, complete las siguientes tareas:

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.

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

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: 6.0.0-ent
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 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
  2. En el clúster del operador, ejecute el siguiente comando para verificar que el recurso MongoDBMultiCluster esté en estado de ejecución:

    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

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

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 -

Volver

Utilice X.509