Docs Menu
Docs Home
/ /

Autenticación segura de clientes con X.509

El operador de controladores MongoDB para Kubernetes puede usar certificados X.509 para autenticar sus aplicaciones cliente en sus implementaciones de MongoDB.

Esta guía le indica cómo configurar la autenticación X.509 desde los clientes a sus instancias de MongoDB.

Nota

No es posible proteger una instancia independiente de MongoDB en un clúster de Kubernetes.

Antes de proteger su implementación de MongoDB usando CifradoTLS, complete lo siguiente:

  • Instalar el operador de Kubernetes

  • Crear 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.

Antes de proteger su conjunto de réplicas mediante X.,509 implemente un conjunto de réplicas cifrado con TLS.

1

Cambie la configuración de este archivo YAML para que coincida con la configuración del conjunto de réplicas deseada.

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: <my-replica-set>
6spec:
7 members: 3
8 version: "8.0.0"
9 opsManager:
10 configMapRef:
11 # Must match metadata.name in ConfigMap file
12 name: <configMap.metadata.name>
13 credentials: <mycredentials>
14 type: ReplicaSet
15 persistent: true
16 security:
17 tls:
18 ca: <custom-ca>
19 certsSecretPrefix: <prefix>
20 authentication:
21 enabled: true
22 modes: ["X509"]
23...
2

Abra su editor de texto preferido y pegue la especificación del objeto al final de su archivo de recursos en el spec sección.

3

Para habilitar TLS y X.509 en su implementación, configure las siguientes opciones en su objeto de Kubernetes:

Clave
Tipo
Necesidad
Descripción
Ejemplo
spec.security
.authentication

booleano

Requerido

Establezca este valor en true para habilitar la autenticación en la implementación de MongoDB.

true

spec.security
.authentication

arreglo

Condicional

Establezca este valor en ["X509"].

["X509"]

4
5

Invoque el siguiente comando de Kubernetes para actualizar su conjunto de réplicas:

kubectl apply -f <replica-set-conf>.yaml
6

Para comprobar el estado de su recurso MongoDB, utilice el siguiente comando:

kubectl get mdb <resource-name> -o yaml -w

Con el -w indicador (observación) activado, cuando la configuración cambia, la salida se actualiza inmediatamente hasta que la fase de estado alcanza el Running estado. Para obtener más información sobre los estados de implementación de recursos, consulte Solucionar problemas del operador de Kubernetes.

Si ya ha creado certificados, le recomendamos que los renueve periódicamente mediante el siguiente procedimiento.

1

Si aún no lo ha hecho, ejecute el siguiente comando para ejecutar todos los kubectl comandos en el espacio de nombres que creó.

Nota

Si está implementando un recurso de Ops Manager en una implementación de MongoDB de un clúster de Kubernetes múltiple:

  • Establezca context en el nombre del clúster del operador, como por ejemplo: kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME".

  • Establezca --namespace en el mismo ámbito que utilizó para su implementación de MongoDB en un clúster de Kubernetes múltiple, como porkubectl config --namespace "mongodb" ejemplo:.

kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
2

Ejecute este kubectl comando para renovar un secreto existente que almacena los certificados del conjunto de réplicas:

kubectl create secret tls <prefix>-<metadata.name>-cert \
--cert=<replica-set-tls-cert> \
--key=<replica-set-tls-key> \
--dry-run=client \
-o yaml |
kubectl apply -f -
3

Ejecute este kubectl comando para renovar un secreto existente que almacena los509 certificados X. de los agentes:

kubectl create secret tls <prefix>-<metadata.name>-agent-certs \
--cert=<agent-tls-cert> \
--key=<agent-tls-key> \
--dry-run=client \
-o yaml |
kubectl apply -f -

Antes de proteger su clúster fragmentado mediante X.,509 implemente un clúster fragmentado cifrado con TLS.

1

Cambie la configuración de este archivo YAML para que coincida con la configuración de clúster fragmentado deseada.

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: <my-sharded-cluster>
6spec:
7 shardCount: 2
8 mongodsPerShardCount: 3
9 mongosCount: 2
10 configServerCount: 3
11 version: "8.0.0"
12 opsManager:
13 configMapRef:
14 name: <configMap.metadata.name>
15 # Must match metadata.name in ConfigMap file
16 credentials: <mycredentials>
17 type: ShardedCluster
18 persistent: true
19 security:
20 tls:
21 ca: <custom-ca>
22 certsSecretPrefix: <prefix>
23 authentication:
24 enabled: true
25 modes: ["X509"]
26...
2

Abre el editor de texto de preferencia y pega la especificación del objeto al final del archivo recurso, en la sección spec.

3

Para habilitar TLS y X.509 en su implementación, configure las siguientes opciones en su objeto de Kubernetes:

Clave
Tipo
Necesidad
Descripción
Ejemplo
spec.security
.authentication

booleano

Requerido

Establezca este valor en true para habilitar la autenticación en la implementación de MongoDB.

true

spec.security
.authentication

arreglo

Condicional

Establezca este valor en ["X509"].

["X509"]

4
5

En cualquier directorio, invoque el siguiente comando de Kubernetes para actualizar y reiniciar su clúster fragmentado:

kubectl apply -f <sharded-cluster-conf>.yaml
6

Para comprobar el estado de su recurso MongoDB, utilice el siguiente comando:

kubectl get mdb <resource-name> -o yaml -w

Con el -w indicador (observación) activado, cuando la configuración cambia, la salida se actualiza inmediatamente hasta que la fase de estado alcanza el Running estado. Para obtener más información sobre los estados de implementación de recursos, consulte Solucionar problemas del operador de Kubernetes.

Si ya ha creado certificados, le recomendamos que los renueve periódicamente mediante el siguiente procedimiento.

1

Si aún no lo ha hecho, ejecute el siguiente comando para ejecutar todos los kubectl comandos en el espacio de nombres que creó.

Nota

Si está implementando un recurso de Ops Manager en una implementación de MongoDB de un clúster de Kubernetes múltiple:

  • Establezca context en el nombre del clúster del operador, como por ejemplo: kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME".

  • Establezca --namespace en el mismo ámbito que utilizó para su implementación de MongoDB en un clúster de Kubernetes múltiple, como porkubectl config --namespace "mongodb" ejemplo:.

kubectl config set-context $(kubectl config current-context) --namespace=<metadata.namespace>
2

Ejecute este kubectl comando para renovar un secreto existente que almacena los certificados de los fragmentos del clúster fragmentado:

kubectl -n mongodb create secret tls <prefix>-<metadata.name>-0-cert \
--cert=<shard-0-tls-cert> \
--key=<shard-0-tls-key> \
--dry-run=client \
-o yaml |
kubectl apply -f -
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-1-cert \
--cert=<shard-1-tls-cert> \
--key=<shard-1-tls-key> \
--dry-run=client \
-o yaml |
kubectl apply -f -
3

Ejecute este kubectl comando para renovar un secreto existente que almacena los certificados del servidor de configuración del clúster fragmentado:

kubectl -n mongodb create secret tls <prefix>-<metadata.name>-config-cert \
--cert=<config-tls-cert> \
--key=<config-tls-key> \
--dry-run=client \
-o yaml |
kubectl apply -f -
4

Ejecute este comando kubectl para renovar un secret existente que almacene los certificados de mongos del clúster sharded:

kubectl -n mongodb create secret tls <prefix>-<metadata.name>-mongos-cert \
--cert=<mongos-tls-cert> \
--key=<mongos-tls-key> \
--dry-run=client \
-o yaml |
kubectl apply -f -
5

Ejecute este kubectl comando para renovar un secreto existente que almacena los509 certificados X. de los agentes:

kubectl create secret tls <prefix>-<metadata.name>-agent-certs \
--cert=<agent-tls-cert> \
--key=<agent-tls-key> \
--dry-run=client \
-o yaml |
kubectl apply -f -