Quando se trata de gerenciar sistemas de banco de dados, um aspecto crucial é a segurança do banco de dados. A falha em estabelecer uma boa base de segurança para qualquer sistema de banco de dados pode resultar em uma violação de dados pela qual um intruso de terceiros terá acesso não autorizado a ele. Consequentemente, eventos como esse podem levar a danos à reputação da marca, multas e penalidades por não conformidade, comprometimento da propriedade intelectual ou até mesmo o fechamento do negócio.
MongoDB – o banco de dados NoSQL mais popular – fornece uma variedade de ferramentas, controles e medidas formuladas para fornecer uma base para os três pilares da segurança da informação – confidencialidade, integridade e disponibilidade. A segurança dos dados é mais frequentemente comprometida no nível de confidencialidade devido à maior usabilidade e acesso.
Quais tipos de dados você deve proteger
Como outros bancos de dados, o MongoDB envolve dois tipos de dados:
- Dados em repouso — São dados armazenados no disco do sistema de arquivos.
- Dados em trânsito — Isso envolve a movimentação de dados por uma rede, por exemplo, entre o banco de dados e um aplicativo.
Para proteger seus dados em qualquer banco de dados, suas medidas de segurança devem abordar:
- Dados nos arquivos de banco de dados.
- Aplicativos associados ao banco de dados.
- A infraestrutura de rede e computação usada para acessar o banco de dados.
- O servidor de banco de dados físico e o hardware subjacente.
Lista de verificação de segurança do MongoDB
Antes de configurar sua implantação de produção do MongoDB, há um padrão mínimo de segurança a ser considerado para garantir que sua implantação seja segura. Confira a seguinte lista de verificação de segurança do MongoDB para
-
Especifique o mecanismo de autenticação ativando o controle de acesso . Antes de permitir o acesso ao banco de dados, é essencial verificar a identidade do usuário. O MongoDB suporta dois mecanismos neste caso:o primeiro é o Salted Challenge Response Authentication Mechanism (SCRAM), que é o mecanismo de autenticação padrão no MongoDB. Ele verifica as credenciais fornecidas (nome de usuário e senha) no banco de dados de autenticação, e a autenticação de certificado X.509 é usada para autenticação de cliente e autenticação interna de membros do conjunto de réplicas e clusters fragmentados.
-
Estabelecer controle de acesso baseado em função . Cada aplicativo ou pessoa com acesso ao banco de dados deve ter uma identidade exclusiva criada pelo administrador do usuário. Defina funções com direitos de acesso exatos e atribua-as aos usuários que precisam realizar as operações.
-
A comunicação entre mongod, mongos, aplicativos e MongoDB deve ser criptografada . A criptografia é obtida por meio da configuração TLS/SSL.
-
Proteção de dados . Se estiver usando o mecanismo de armazenamento WiredTiger para dados em repouso, você poderá criptografar os dados usando a criptografia em repouso. Se estiver usando um mecanismo de armazenamento diferente, criptografe os dados usando a criptografia de sistema de arquivos, física ou de dispositivo e adicione as permissões do sistema de arquivos. Além disso, você pode criptografar campos em documentos com a criptografia em nível de campo do lado do cliente antes de transmitir dados do servidor.
-
Rede segura de operação . O MongoDB deve ser executado em um ambiente de rede confiável, de modo que apenas clientes confiáveis possam ter acesso à interface de rede e às portas. Você pode conseguir isso desabilitando o acesso direto à raiz SSH e configurando a configuração com grupos de segurança para tráfego de entrada e saída para as instâncias do MongoDB.
-
Atividades do sistema de auditoria . Manter o controle das atividades de acesso do usuário ao banco de dados é muito importante. A auditoria permite que os administradores exerçam controles adequados e permitam uma análise forense adequada. Alguns recursos de auditoria, como o MongoDB Enterprise, fornecem filtros para eventos específicos, como eventos de autenticação, para reduzir os dados que precisam ser analisados.
-
Ative as opções de configuração segura ao executar o MongoDB . É aconselhável limitar o uso de código JavaScript suportado pelo MongoDB, como mapReduce, $where e $function. Você pode desativar completamente essas opções usando a opção --noscripting. Valide os campos de entrada usando módulos como mangusto. Além disso, você pode usar net.writeObjectCheck para garantir que todos os documentos armazenados pela instância do mongod sejam BSON válidos.
-
Execute o MongoDB com um usuário dedicado . Não vale a pena rodar o MongoDB em um sistema operacional que pode ser acessado por vários usuários. Para garantir a segurança, o MongoDB deve ser executado por uma conta de usuário do sistema dedicada que tenha permissões para acessar dados, mas não permissões desnecessárias que possam comprometer a integridade dos dados.
Práticas ruins de segurança do MongoDB a serem evitadas
Recentemente, houve um aumento nos incidentes de invasão de banco de dados, especialmente o MongoDB. Isso não ocorre porque o MongoDB não atende aos padrões para lidar com questões de segurança, mas sim devido à falha dos desenvolvedores em seguir as melhores práticas de segurança.
MongoDB é um DBMS de código aberto, o que significa que alguns desenvolvedores podem conhecer os meandros mais do que outros. Isso nem sempre significa que seu banco de dados está em risco de intrusão externa, a menos que você incorra em algum dos seguintes erros:
-
Usando as portas padrão . Não há nada de errado em usar as portas padrão (27017 e 27018), mas às vezes você pode esquecer de definir os grupos de segurança responsáveis por gerenciar o tráfego em seu sistema. Os hackers sempre tentarão acessar o banco de dados com as portas padrão antes de tentar outra coisa. Você pode executar o MongoDB em uma porta diferente com a opção de porta, ou seja, $mongo –port 23456. No entanto, a maneira recomendada é alterar a configuração no arquivo /etc/mongod.conf editando a linha abaixo com seu número de porta preferido:
net: port:27017
O MongoDB, por padrão, é executado sem autenticação, o que costuma ser um problema para novas implantações que entram em produção. A falha em habilitar a autenticação significa que qualquer pessoa pode acessar o banco de dados com facilidade. Sempre crie um usuário com permissões de acesso baseadas em função para interagir com o banco de dados MongoDB.
-
Armazenamento inadequado de credenciais do usuário . Alguns desenvolvedores codificam as credenciais de nome de usuário e senha no projeto e, quando as tornam públicas, qualquer pessoa pode ter acesso a elas, tornando o banco de dados vulnerável.
-
Falha ao limitar o acesso ao banco de dados a dispositivos de rede conhecidos . Nesse caso, deve-se sempre limitar o acesso ao banco de dados a apenas aplicativos conhecidos e balanceadores de carga por meio de uma lista de permissões. Isso limita a disponibilidade do banco de dados a redes desconhecidas que podem representar uma ameaça à segurança.
-
Evitando o uso de SSL . A autenticação SSL é muito crucial para garantir que apenas conexões confiáveis cheguem ao banco de dados.
-
Falha ao usar LDAP para rotações de senha . O LDAP vincula os usuários a um diretório corporativo de modo que, quando sua função muda ou eles saem da empresa, as alterações se aplicam automaticamente ao grupo de banco de dados. Isso garante que o acesso aos dados será limitado à função para a qual foram reatribuídos ou totalmente limitado se deixarem a empresa.
Proteção da infraestrutura de rede
Muitas vezes, as ameaças à segurança começam no nível de exposição da rede porque essa é a parte mais acessível para a maioria dos hackers. Além de garantir que apenas hosts confiáveis tenham acesso ao MongoDB, você pode aprimorar a segurança por meio do fortalecimento da rede. A proteção da rede envolve dois procedimentos em relação ao MongoDB:
-
Firewalls . Os firewalls são usados para limitar o tráfego de entrada de hosts não confiáveis que, de outra forma, exporiam o banco de dados MongoDB a invasões externas. Para sistemas operacionais Windows, a interface de linha de comando netsh fornece acesso ao Firewall do Windows. Em sistemas Linux, a interface iptables fornece acesso ao firewall netfilter subjacente. O firewall filtrará os hosts não confiáveis e garantirá que apenas o tráfego de fontes confiáveis possa alcançar o mongod &mongos, além de criar uma conexão com as saídas confiáveis.
-
Redes privadas virtuais (VPNs) . As VPNs permitem que duas redes se conectem em uma rede confiável criptografada e de acesso limitado. Eles fazem isso fornecendo validação de certificado e uma escolha de protocolos de criptografia que podem exigir um nível rigoroso de autenticação e identificação de todos os clientes. As VPNs fornecem um túnel seguro; portanto, as conexões criadas com a instância do MongoDB usando VPNs podem evitar adulterações e ataques man-in-the-middle.
Encerrando
Assim como em todos os bancos de dados de código aberto, a segurança deve ser a principal prioridade para sua infraestrutura MongoDB. A implantação de seu banco de dados MongoDB com configurações padrão é um caminho claro para um desastre de segurança. Portanto, é crucial entender completamente como funciona a segurança no MongoDB e seguir todas as práticas recomendadas para garantir a máxima segurança. Mais importante ainda, auditar as atividades do usuário, como autenticação, fornece uma janela para identificar brechas e planejar o futuro antes que ocorra um desastre.
Ferramentas como o ClusterControl ajudam você a eliminar as suposições da segurança do banco de dados e garantem que suas implantações do MongoDB sempre seguirão o respectivo modelo de segurança. Com o ClusterControl, você pode configurar facilmente seus bancos de dados, controles de acesso e criptografia para dados em repouso e em trânsito. Se você ainda não o fez, baixe o ClusterControl hoje e comece sua avaliação gratuita de 30 dias para ver como o ClusterControl pode ajudá-lo a gerenciar e melhorar a segurança do seu banco de dados MongoDB.