MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Arquitetura para segurança:um guia para o MongoDB

A prevalência de violações de dados não é mais surpreendente. Com base no recém-lançado relatório de crimes cibernéticos do FBI, as vítimas de crimes cibernéticos perderam cumulativamente US$ 4,2 bilhões em 2020, US$ 700 milhões a mais do que as perdas relatadas em 2019. Em particular, bancos de dados inseguros do MongoDB fizeram parte do problema que levou a violações significativas de dados . Em fevereiro de 2019, uma empresa de serviços de verificação de e-mail teve seu banco de dados MongoDB violado e expôs 763 milhões de registros, incluindo endereços de e-mail, números de telefone, endereços IP e datas de nascimento. O motivo é que uma instância MongoDB voltada para o público sem senha.

Falta de autenticação, nenhuma restrição de portas no firewall ou falha em proteger os dados na transmissão pode levar a uma violação de dados. Neste blog, discutiremos como preparar e proteger seu banco de dados MongoDB em um ambiente de produção.

Autenticação e autorização

Autenticação e autorização são duas coisas diferentes, mas estão correlacionadas. Autenticação significa que o usuário tem acesso ao banco de dados MongoDB, enquanto a autorização permite que o usuário acesse o recurso dentro do banco de dados.

A instalação padrão para autenticação no MongoDB está desabilitada. MongoDB suporta múltiplas autenticações, por exemplo:SCRAM, x.509 Certificate Authentication. O padrão no MongoDB é o SCRAM (Salted Challenge Response Authentication Mechanism), que verifica as credenciais de acesso fornecidas com o nome de usuário, senha e banco de dados de autenticação.

Antes de habilitar a autenticação, por favor, crie um superusuário no MongoDB com a função userAdminAnyDatabase. Após terminar, basta abrir o arquivo /etc/mongod.conf e encontrar a seção sobre segurança. O padrão é desabilitado, só precisamos habilitar.

security:
    authorization: "disabled"

Reinicie o serviço MongoDB para aplicar as alterações de configuração. Também podemos configurar o RBAC (Role Based Access Control) dentro do banco de dados MongoDB para melhor segurança relacionada ao usuário. Então, segregamos o acesso ao banco de dados com base no usuário e privilégios.

Segmentação de rede

A segmentação de rede é um aspecto importante quando projetamos a arquitetura de banco de dados, ela se aplica a todos os bancos de dados, não apenas ao MongoDB. É uma prática recomendada que segreguemos a rede para o banco de dados. Configuramos o servidor de banco de dados em uma rede privada, onde ele não pode ser acessado pela internet.

A comunicação com o banco de dados acontece na rede privada, e quando o usuário deseja acessar o banco de dados, pode utilizar VPN ou jumphost. Além da segmentação da rede, a restrição da porta também desempenha um papel fundamental, abrimos a porta do banco de dados específica da rede segmentada para controlar o tráfego de entrada e saída da rede. Portanto, sabemos que o tráfego de entrada é do endereço de origem confiável.

Criptografia de dados

Outra área que precisamos dar uma olhada é a criptografia de dados. A criptografia de dados é um método em que as informações são codificadas em outra forma durante a transmissão e armazenadas no banco de dados.

A criptografia de dados abrange:

  • Dados em trânsito:dados em estado de transmissão

  • Dados em repouso:dados armazenados em disco. Existem vários tipos de criptografia de dados em repouso, podemos usar a criptografia no nível do banco de dados ou podemos usar a criptografia na camada de armazenamento.

A habilitação do SSL/TLS dos clientes e do servidor MongoDB e entre os nós do MongoDB (na arquitetura de replicaset e cluster fragmentado) protegerá os dados em trânsito. A transferência de dados não será em texto simples.

Existem várias ferramentas e recursos de criptografia para criptografia de dados em repouso, por exemplo; A AWS fornece criptografia de disco EBS combinada com o KMS (Key Management Service) no armazenamento, enquanto na camada de banco de dados, a edição Enterprise do MongoDB fornece a criptografia de banco de dados em repouso.

Auditoria de banco de dados

Implementar um banco de dados de auditoria para MongoDB dá visibilidade do que está sendo executado dentro do banco de dados; por exemplo:de qual usuário, e qual comando foi executado, e a fonte do endereço IP. Podemos combinar esses logs e criar regras com base na autorização de acesso. Podemos detectar se há algum usuário não intencional executando algum script no MongoDB. Podemos ver a seção auditLog.

auditLog:
   destination: syslog

Podemos enviar o log de auditoria do MongoDB para os arquivos syslog e enviar os logs para o Log Management. Quer ter mais dicas sobre como proteger o MongoDB? Assista a este vídeo para entender melhor as práticas recomendadas para proteger seu banco de dados MongoDB


Conclusão

A implementação de padrões de segurança para o MongoDB é uma obrigação, especialmente para um ambiente de produção. Não podemos aceitar todas as perdas e violações dos dados armazenados no banco de dados.