Para agentes de IA: hay un índice de documentación disponible en https://www.mongodb.com/es/docs/llms.txt — versiones en markdown de todas las páginas están disponibles agregando .md a cualquier ruta URL.
Docs Menu

Configurar la autenticación interna del clúster único (X.509)

Esta guía le instruye sobre cómo configurar:

  • Autenticación interna X.509 entre nodos de MongoDB en un clúster.

  • Autenticación X.509 de los clientes a tus instancias de MongoDB.

El Operador de Kubernetes no admite otros esquemas de autenticación entre nodos de MongoDB en un clúster.

Nota

No puedes asegurar una instancia autónoma de MongoDB en un clúster de Kubernetes.

Antes de proteger cualquiera de tus implementaciones de MongoDB usando cifrado TLS, completa lo siguiente:

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.

Antes de proteger tu set de réplicas con X.509, implementa un set de réplicas cifrado con TLS.

1

Ejecuta este comando kubectl para crear un nuevo secreto que almacena el certificado del set de réplicas:

kubectl create secret tls <prefix>-<metadata.name>-clusterfile \
--cert=<replica-set-clusterfile-tls-cert> \
--key=<replica-set-clusterfile-tls-key>

Nota

Debe anteponer sus secretos con <prefix>-<metadata.name>.

Por ejemplo, si llama a su implementación my-deployment y establece el prefijo en mdb, debe nombrar el secreto TLS para las comunicaciones TLS del cliente mdb-my-deployment-cert. Además, debe nombrar el secreto TLS para la autenticación interna del clúster (si está habilitada) mdb-my-deployment-clusterfile.

2

Cambia los ajustes de este archivo YAML para que coincidan con la configuración de set 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 internalCluster: "X509"
24...
3

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

4

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

Clave
Tipo
Necesidad
Descripción
Ejemplo

spec.security
.authentication
.enabled

booleano

Requerido

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

true

spec.security
.authentication
.modes

arreglo

Condicional

Configura este valor en ["X509"].

["X509"]

5

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

Clave
Tipo
Necesidad
Descripción
Ejemplo

spec.security
.authentication
.internalCluster

string

Requerido

Utilice esta configuración para habilitar la autenticación interna del clúster X..509

IMPORTANTE: una vez habilitada la autenticación interna del clúster, no se puede deshabilitar.

X509

6
7

Invoca el siguiente comando de Kubernetes para actualizar tu set de réplicas:

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

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

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

Con la bandera -w (observar) activada, cuando la configuración cambia, la salida se actualiza inmediatamente hasta que la fase de estado alcanza el estado Running. Para obtener más información sobre el estado de implementación de recursos, consulta Solucionar problemas con el operador de Kubernetes.

Si ya creaste los certificados, te recomendamos que los renueves periódicamente utilizando el siguiente procedimiento.

1

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

Nota

Si estás implementando un recurso de Ops Manager en una implementación de MongoDB multidispositivo en clústeres de Kubernetes:

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

  • Establece el --namespace en el mismo ámbito que utilizaste para tu implementación de MongoDB de clústeres multi-Kubernetes, como por ejemplo: kubectl config --namespace "mongodb".

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

Ejecuta este comando kubectl para renovar un secreto existente que almacena los certificados del set 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

Ejecuta este kubectl comando para renovar un secreto existente que almacena el certificado del set de réplicas:

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

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 asegurar tu clúster particionado usando X.509, por favor implementa un clúster particionado cifrado con TLS.

1

Ejecuta este comando kubectl para crear un nuevo secreto que almacene los certificados de las particiones del clúster fragmentado:

kubectl -n mongodb create secret tls <prefix>-<metadata.name>-0-clusterfile \
--cert=<shard-0-clusterfile-tls-cert> \
--key=<shard-0-clusterfile-tls-cert>
kubectl -n mongodb create secret tls <prefix>-<metadata.name>-1-clusterfile \
--cert=<shard-1-clusterfile-tls-cert> \
--key=<shard-1-clusterfile-tls-cert>
2

Ejecuta este comando kubectl para crear un nuevo secreto que almacene los certificados del servidor de configuración del clúster particionado:

kubectl -n mongodb create secret tls <prefix>-<metadata.name>-config-clusterfile \
--cert=<config-clusterfile-tls-cert> \
--key=<config-clusterfile-tls-cert>
3

Ejecute este kubectl comando para crear un nuevo secreto que almacene los certificados mongos del clúster fragmentado:

kubectl -n mongodb create secret tls <prefix>-<metadata.name>-mongos-clusterfile \
--cert=<mongos-clusterfile-tls-cert> \
--key=<mongos-clusterfile-tls-cert>
4

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

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 internalCluster: "X509"
27...
5

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

6

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

Clave
Tipo
Necesidad
Descripción
Ejemplo

spec.security
.authentication
.enabled

booleano

Requerido

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

true

spec.security
.authentication
.modes

arreglo

Condicional

Configura este valor en ["X509"].

["X509"]

7

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

Clave
Tipo
Necesidad
Descripción
Ejemplo

spec.security
.authentication
.internalCluster

string

Requerido

Utilice esta configuración para habilitar la autenticación interna del clúster X..509

IMPORTANTE: una vez habilitada la autenticación interna del clúster, no se puede deshabilitar.

X509

8
9

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

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

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

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

Con la bandera -w (observar) activada, cuando la configuración cambia, la salida se actualiza inmediatamente hasta que la fase de estado alcanza el estado Running. Para obtener más información sobre el estado de implementación de recursos, consulta Solucionar problemas con el operador de Kubernetes.

Si ya creaste los certificados, te recomendamos que los renueves periódicamente utilizando el siguiente procedimiento.

1

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

Nota

Si estás implementando un recurso de Ops Manager en una implementación de MongoDB multidispositivo en clústeres de Kubernetes:

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

  • Establece el --namespace en el mismo ámbito que utilizaste para tu implementación de MongoDB de clústeres multi-Kubernetes, como por ejemplo: kubectl config --namespace "mongodb".

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

Ejecute este comando kubectl para renovar un secreto existente que almacena los certificados de las particiones 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 comando kubectl para renovar una secreto existente que almacena los certificados del servidor de configuración del clúster sharded:

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

Run this kubectl command to renew an existing secret that stores the sharded cluster mongos certificates:

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 comando kubectl para renovar un secreto existente que almacena los certificados de las particiones del clúster fragmentado:

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

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

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

Run this kubectl command to renew an existing secret that stores the sharded cluster mongos certificates:

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

Run this kubectl command to renew an existing secret that stores the agents' X.509 certificates:

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 -