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 decriptografia autenticada para cada conexão de banco 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 canais: o tráfego entre os clientes e o MongoDB é criptografado. Você pode ativar a criptografia de canais usando certificados TLS autoassinados. Os certificados autoassinados são fáceis de criar, mas não oferecem nenhuma validação de identidade de cliente ou servidor, portanto, você estará vulnerável a ataques intermediários. Essa opção só faz sentido em 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 identidadedo cliente: a validação da identidade do cliente significa que o banco de dados pode garantir que todas as conexões do cliente venham de seus clientes autorizados. Nesse cenário, o cliente tem um certificado e o usa para se autenticar no banco de dados ao se conectar.
- Validação de identidade do servidor : A validaçãode identidade do servidor significa que os clientes do MongoDB podem garantir que estão se comunicando com seu MongoDB database. O servidor possui um certificado de identidade que todos os clientes podem validar ao se conectar ao MongoDB database.
- 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.
- X.509 Autenticação de usuário: em vez de senhas, você pode usar certificados X.509 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.