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.
Pré-requisitos gerais
Antes de proteger qualquer uma das suas implantações do MongoDB usando a criptografia TLS , faça o seguinte:
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
Configurar autenticação interna X.509 para um conjunto de réplicas
Pré-requisitos
Antes de proteger seu conjunto de réplicas usando o X.509, implemente um conjunto de réplicas criptografado por TLS.
Habilitar autenticação interna X.509
Crie o segredo para seu509 certificado X. .
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
.
Copie o recurso definir de exemplo.
Altere as configurações desse arquivo YAML para corresponder à configuração desejada do definir .
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-replica-set> 6 spec: 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 ...
Cole a seção de exemplo copiada no recurso de conjunto de réplicas existente.
Abra seu editor de texto preferido e cole o objeto especificação no final do seu arquivo de recurso na spec
seção .
Configure as configurações gerais do X.509 para seu recurso de conjunto de réplicas .
Para habilitar o TLS e o X.509 em seu sistema, defina as seguintes configurações no seu objeto Kubernetes:
Configure as configurações internas do X.509 para seu recurso de conjunto de réplicas .
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 |
---|---|---|---|---|
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 |
Salve o arquivo de configuração do conjunto de réplicas .
Aplique suas alterações à implantação do conjunto de réplicas .
Invoque o seguinte comando do Kubernetes para atualizar seu conjunto de réplicas:
kubectl apply -f <replica-set-conf>.yaml
Monitore o status da sua implementação.
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.
Renovar certificados X.509 de autenticação interna para um conjunto de réplicas
Se você já tiver criado certificados, recomendamos que você os renove periodicamente usando o procedimento a seguir.
Configure kubectl
como padrão para seu namespace.
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>
Renove o segredo para seus certificados TLS.
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 -
Renove o segredo para seu509 certificado X. .
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 -
Renove o segredo para os509 certificados X. dos seus agentes.
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 -
Configurar autenticação interna X.509 para um cluster fragmentado
Pré-requisitos
Antes de proteger seu cluster fragmentado usando o X.509, implemente um cluster fragmentado criptografado por TLS.
Habilitar autenticação interna X.509
Criar o segredo para seus certificados X.509 dos Shards.
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>
Criar o segredo para o certificado X. dos seus servidores de509 configuração.
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>
Criar o segredo para os509 certificados X. do seu servidor mongos.
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>
Copie o recurso cluster fragmentado da amostra.
Altere as configurações desse arquivo YAML para corresponder à configuração de cluster fragmentado desejado.
1 2 apiVersion: mongodb.com/v1 3 kind: MongoDB 4 metadata: 5 name: <my-sharded-cluster> 6 spec: 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 ...
Cole a seção de exemplo copiada no recurso do cluster fragmentado existente.
Abra seu editor de texto preferido e cole o objeto especificação no final do seu arquivo de recurso na spec
seção .
Configure as configurações gerais do X.509 para seu cluster fragmentado .
Para habilitar o TLS e o X.509 em seu sistema, defina as seguintes configurações no seu objeto Kubernetes:
Configure as configurações internas do X.509 para seu cluster fragmentado .
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 |
---|---|---|---|---|
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 |
Salve seu arquivo de configuração do cluster fragmentado .
Atualize e reinicie sua implantação de cluster fragmentado .
Em qualquer diretório, invoque o seguinte comando do Kubernetes para atualizar e reiniciar seu cluster fragmentado:
kubectl apply -f <sharded-cluster-conf>.yaml
Monitore o status da sua implementação.
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.
Renovar certificados X.509 de autenticação interna para um cluster fragmentado
Se você já tiver criado certificados, recomendamos que você os renove periodicamente usando o procedimento a seguir.
Configure kubectl
como padrão para seu namespace.
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>
Renove o segredo para os certificados TLS dos seus Shards.
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 -
Renove o segredo para os certificados TLS do seu servidor de configuração.
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 -
Renove o segredo para os certificados TLS do seu servidor mongos.
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 -
Renove o segredo para seus certificados X.509 dos Shards.
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 -
Renove o segredo para o certificado X. dos seus servidores de509 configuração.
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 -
Renove o segredo para os509 certificados X. do seu servidor mongos.
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 -
Renove o segredo para os509 certificados X. dos seus agentes.
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 -