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

Autenticação interna segura com X.509

Nesta página

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

Este guia instrui você sobre como configurar:

  • Autenticação interna X.509 entre nós MongoDB em um cluster.

  • Autenticação X.509 de clientes para suas instâncias MongoDB.

O Operador Kubernetes não suporta outros esquemas de autenticação entre nós MongoDB em um cluster.

Observação

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

Antes de proteger qualquer uma das suas implantações do MongoDB usando a criptografia TLS , 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

Execute este kubectl comando para criar um novo segredo que armazena o certificado do conjunto de réplicas:

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

Observação

É necessário prefixar os segredos com <prefix>-<metadata.name>.

Por exemplo, se você chamar sua implantação my-deployment de e definir o prefixo como mdb, deverá nomear o segredo TLS para as comunicações TLS do cliente mdb-my-deployment-cert. Além disso, você deve nomear o segredo TLS para autenticação interna do cluster (se ativado) como mdb-my-deployment-clusterfile.

2

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 internalCluster: "X509"
24...
3

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

4

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

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
string
Obrigatório

Use essa configuração para habilitar a autenticação de cluster interno X.509 .

IMPORTANTE: depois de habilitada, a autenticação interna do cluster não poderá ser desabilitada.

X509
7

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

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

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.

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 o certificado do conjunto 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

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

Execute este comando kubectl para criar um novo secreto que armazena os certificados de fragmento de cluster 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

Execute este kubectl comando para criar um novo segredo que armazena os certificados do servidor de configuração do cluster fragmentado :

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

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

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

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

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

6

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

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
string
Obrigatório

Use essa configuração para habilitar a autenticação de cluster interno X.509 .

IMPORTANTE: depois de habilitada, a autenticação interna do cluster não poderá ser desabilitada.

X509
8
9

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

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

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.

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

Execute este kubectl comando para renovar um segredo existente que armazena o certificado dos servidores de configuração do cluster 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

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-clusterfile \
--cert=<mongos-clusterfile-tls-cert> \
--key=<mongos-clusterfile-tls-cert> \
--dry-run=client \
-o yaml |
kubectl apply -f -
8

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 -