Protegendo o MongoDB com TLS
Avalie esse Artigo
O MongoDB tem um suporte muito forte para TLS que pode ser controlado granularmente. No mínimo, o TLS permitirá que você valide e criptografe conexões em seu banco de dados ou entre os nós membros do cluster. Mas o MongoDB também pode ser configurado para autenticar usuários usando certificados de cliente TLS em vez de uma senha. Isso abre a possibilidade de mais segurança do cliente usando certificados de curta duração (16horas). A adição da Smallstep step-ca, uma autoridade de certificação de código aberto, facilita a criação e o gerenciamento de certificados TLS do MongoDB.
Os certificados TLS oferecem muitos benefícios:
- Mais importante, o TLS possibilita a exigência de criptografia autenticada para cada conexão de banco de dados de dados, assim como as conexões SSH.
- Ao contrário das chaves SSH, os certificados expiram. Você pode emitir certificados efêmeros (por exemplo, de cinco minutos) para as pessoas sempre que elas precisarem acessar seu banco de dados e evitar ter material de chave de longa duração (como chaves SSH) nos laptops das pessoas.
- Os certificados permitem criar um domínio de confiança em torno do seu banco de dados. O MongoDB pode ser configurado para recusar conexões de clientes que não possuem um certificado emitido por sua Autoridade de Certificação (CA) confiável.
- Os certificados podem atuar como credenciais de login do usuário no MongoDB, substituindo senhas. Isso permite delegar a autenticação MongoDB para uma CA. Isso abre a porta para mais delegações via OpenID Connect, para que você possa ter acesso MongoDB de logon único.
Quando aplicados em conjunto, estes benefícios oferecem um nível de segurança comparável a um túnel SSH — sem a necessidade de SSH.
Aqui está uma visão geral dos recursos de TLS que podem ser habilitados no MongoDB:
- Criptografia de canal: o tráfego entre clientes e o MongoDB é criptografado. Você pode habilitar a criptografia de canal usando certificados TLS autoassinados. Os certificados autoassinados são fáceis de criar, mas não oferecem nenhuma validação de identidade do cliente ou do servidor , portanto, você estará vulnerável a ataques do tipo man-in-the-middle. Esta opção só faz sentido dentro de uma rede confiável.
- Validação de identidade: para habilitar a validação de identidade no MongoDB, você precisará executar um X.509 CA que possa emitir certificados para seus hosts e clientes do MongoDB . A validação de identidade acontece em ambos os lados de uma conexão MongoDB :
- Validação da identidade do cliente: A validação da identidade do cliente significa que o banco de dados de dados pode garantir que todas as conexões do cliente sejam originadas de seus clientes autorizados. Neste cenário, o cliente tem um certificado e o utiliza para se autenticar no banco de banco de dados ao se conectar.
- Validação de identidade do servidor : A validação de identidade do servidor significa que os clientes do MongoDB podem garantir que estão se comunicando com seu banco de banco de dados MongoDB . O servidor possui um certificado de identidade que todos os clientes podem validar ao se conectar ao banco de banco de dados.
- Validação de membros do cluster: o MongoDB pode exigir que todos os membros de um cluster apresentem certificados válidos ao ingressar no cluster. Isso criptografa o tráfego entre os nós do cluster.
- Autenticação de usuário X.509 : em vez de senhas, você pode usar509 certificados X. como credenciais de login para usuários do MongoDB .
- Rotação de certificados online: use certificados de curta duração e a rotação de certificados online do MongoDB para automatizar operações.
Para obter o máximo valor do TLS com sua implementação autogerenciada do MongoDB, você precisa executar uma CA (o MongoDB Atlas totalmente gerenciado vem com recursos de TLS habilitados por padrão).
Configurar uma CA costumava ser um aborrecimento difícil e demorado, exigindo profundo conhecimento do domínio. Graças aos protocolos e ferramentas crescentes, ficou muito mais fácil para qualquer desenvolvedor criar e gerenciar uma CA privada simples no 2021. Na Smallstep, criamos uma CA online de código aberto chamada step-ca que é segura e fácil de usar, online ou offline.
Aqui estão as principais etapas necessárias para proteger o MongoDB com TLS. Se você quiser tentar fazer isso, pode encontrar uma série de postagens de blog no site Smallstep detalhando as etapas:
- Configure uma CA. Uma única instância do step-ca é suficiente. Ao executar sua própria CA e usar certificados de curta duração, você pode evitar a complexidade de gerenciar pontos de extremidade CRL e OCSP usando a revogação passiva. Com a revogação passiva, se uma chave for comprometida, você simplesmente bloqueará a renovação de seu certificado na CA.
- Para validação do servidor, emita um certificado e uma chave privada para o servidor MongoDB e configure o TLS do servidor.
- Para validação do cliente, emita certificados e chaves privadas para seus clientes e configure o TLS no lado do cliente.
- Para validação de membros do cluster, emita certificados e chaves para seus membros do cluster MongoDB e configure o TLS do cluster.
- Implemente mecanismos de renovação para seus certificados. Por exemplo, certificados usados por humanos podem ser assinados manualmente quando uma conexão com o banco de dados é necessária. Os certificados usados por programas de clientes ou contas de serviço podem ser atualizados com um trabalho agendado.
- Para habilitar a autenticação de usuário X.509 , você precisará adicionar usuários X.509autenticados ao seu banco de dados e configurar seus clientes para tentar a autenticação de usuário X.509 ao se conectar ao MongoDB.
- Aqui está a cobertura do bolo: depois de configurar tudo isso, você pode configurar o step-ca para permitir que os usuários obtenham certificados MongoDB por meio de um provedor de identidade, usando o OpenID Connect. Esta é uma maneira simples de ativar o logon único para o MongoDB.
Por fim, é importante observar que é possível realizar o estágio da migração de um cluster MongoDB existente para o TLS:
Pronto para começar? Nesta série de tutoriaisSmallstep, levaremos você por esse processo passo a passo.