Menu Docs
Página inicial do Docs
/
Operador de Kubernetes do MongoDB Enterprise
/ /

Autenticação segura do cliente com X.509

Nesta página

  • Pré-requisitos gerais
  • Configurar autenticação de cliente X.509 para um conjunto de réplicas
  • Pré-requisitos
  • Habilitar autenticação do cliente X.509
  • Renovar certificados X.509 para um conjunto de réplicas
  • Configurar autenticação de cliente X.509 para um cluster fragmentado
  • Pré-requisitos
  • Habilitar autenticação do cliente X.509
  • Renovar certificados X.509 para um cluster fragmentado

O MongoDB Enterprise Kubernetes Operator pode usar certificados X.509 para autenticar seus aplicativos clientes em seus MongoDB deployments.

Este guia instrui você sobre como configurar a autenticação X.509 de clientes para suas instâncias MongoDB.

Observação

Você não pode proteger uma instância standalone do MongoDB em um cluster Kubernetes.

Antes de proteger sua implantação do MongoDB usando a criptografiaTLS do , faça o seguinte:

  • Instalar o Operador Kubernetes

  • Criar Credenciais para o Operador Kubernetes

A ativação da autenticação X.509 no nível do projeto configura todos os agentes para usar a autenticação de cliente X.509 ao se comunicar com deployments do MongoDB.

A autenticação do cliente X.509 requer um dos seguintes:

  • Cloud Manager

  • Ops Manager 4.1.7 ou posterior

  • Ops Manager 4.0.11 ou mais tarde

Antes de proteger seu conjunto de réplicas usando o X.509, implemente um conjunto de réplicas criptografado por TLS.

1

Altere as configurações desse arquivo YAML para corresponder à configuração desejada do definir .

1---
2apiVersion: mongodb.com/v1
3kind: MongoDB
4metadata:
5 name: <my-replica-set>
6spec:
7 members: 3
8 version: "4.2.2-ent"
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 o editor de texto de sua preferência e cole a especificação do objeto no final do arquivo de recurso na spec seção.

3

Para habilitar o TLS e o X.509 em seu sistema, defina as seguintes configurações no seu objeto Kubernetes:

Chave
Tipo
necessidade
Descrição
Exemplo
spec.security
.authentication
booleano
Obrigatório
Configure este valor para true para habilitar a autenticação no MongoDB deployment.
true
spec.security
.authentication
array
Condicional
Defina este valor como ["X509"].
["X509"]
5

Invoque o seguinte comando do Kubernetes para atualizar seu conjunto de réplicas:

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

Para verificar o status do seu recurso MongoDB, utilize o seguinte comando:

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

Com o sinalizador -w (inspeção) definido, quando a configuração muda, o resultado é atualizado imediatamente até que a fase de status atinja o estado Running . Para saber mais sobre os status de distribuição de recursos, consulte Solucionar problemas do operador Kubernetes.

Se você já tiver criado certificados, recomendamos que você os renove periodicamente usando o procedimento a seguir.

Observação

Para automatizar a renovação de certificados para sistemas do Ops Manager, considere configurar a integração do certificador-manager.

1

Caso ainda não tenha feito isso, execute o seguinte comando para executar todos os comandos kubectl no namespace que você criou.

Observação

Se você estiver implantando um recurso MongoDB Ops Manager em um sistema do MongoDB de vários clusters Kubernetes:

  • Defina context como o nome do cluster central, como: kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME".

  • Defina --namespace para o mesmo escopo usado para sua implantação do MongoDB de vários clusters Kubernetes, como: kubectl config --namespace "mongodb".

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

Execute este kubectl comando para renovar um segredo existente que armazena os certificados do 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

Execute este kubectl comando para renovar um segredo existente que armazena os509 certificados X. dos 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 seu cluster fragmentado usando o X.509, implemente um cluster fragmentado criptografado por TLS.

1

Altere as configurações desse arquivo YAML para corresponder à configuração de cluster fragmentado desejado.

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: "4.2.2-ent"
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

Abra seu editor de texto preferido e cole o objeto especificação no final do seu arquivo de recurso na spec seção .

3

Para habilitar o TLS e o X.509 em seu sistema, defina as seguintes configurações no seu objeto Kubernetes:

Chave
Tipo
necessidade
Descrição
Exemplo
spec.security
.authentication
booleano
Obrigatório
Configure este valor para true para habilitar a autenticação no MongoDB deployment.
true
spec.security
.authentication
array
Condicional
Defina este valor como ["X509"].
["X509"]
4
5

Em qualquer diretório, invoque o seguinte comando do Kubernetes para atualizar e reiniciar seu cluster fragmentado:

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

Para verificar o status do seu recurso MongoDB, utilize o seguinte comando:

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

Com o sinalizador -w (inspeção) definido, quando a configuração muda, o resultado é atualizado imediatamente até que a fase de status atinja o estado Running . Para saber mais sobre os status de distribuição de recursos, consulte Solucionar problemas do operador Kubernetes.

Se você já tiver criado certificados, recomendamos que você os renove periodicamente usando o procedimento a seguir.

Observação

Para automatizar a renovação de certificados para sistemas do Ops Manager, considere configurar a integração do certificador-manager.

1

Caso ainda não tenha feito isso, execute o seguinte comando para executar todos os comandos kubectl no namespace que você criou.

Observação

Se você estiver implantando um recurso MongoDB Ops Manager em um sistema do MongoDB de vários clusters Kubernetes:

  • Defina context como o nome do cluster central, como: kubectl config set context "$MDB_CENTRAL_CLUSTER_FULL_NAME".

  • Defina --namespace para o mesmo escopo usado para sua implantação do MongoDB de vários clusters Kubernetes, como: kubectl config --namespace "mongodb".

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

Execute este comando kubectl para renovar um segredo existente que armazena os certificados dos fragmentos de cluster fragmentados:

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

Execute este comando do kubectl para renovar um segredo existente que armazena os certificados do servidor de configuração do agrupamento 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

Execute este kubectl comando para renovar um segredo existente que armazena os certificados do cluster fragmentado :mongos

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

Execute este kubectl comando para renovar um segredo existente que armazena os509 certificados X. dos 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 -