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

Como usar a criptografia para proteger os dados do MongoDB

Com muitos tipos de dados armazenados no banco de dados, às vezes podemos estar lidando com dados confidenciais, que podem incluir dados de cartão de crédito, registros financeiros, informações pessoais. Esses dados de PII (Informações de Identificação Pessoal) estão sujeitos a regulamentação, por exemplo:PCI DSS, HIPAA ou GDPR, que precisamos proteger e garantir a confidencialidade, integridade e disponibilidade.

A Criptografia de Dados faz parte da arquitetura do MongoDB para implementação de segurança em ambientes de produção. O objetivo da criptografia de dados é adicionar mais proteções para a segurança dos dados, especialmente contra ameaças internas. Bloqueamos o serviço e as portas do banco de dados, mantemos uma lista de controle de acesso de quem pode acessar e realizar quais operações no banco de dados e habilitamos a criptografia para proteger contra sniffing durante a transmissão da rede ou quando os dados são armazenados. Neste blog, discutiremos como usar criptografia no MongoDB.

Criptografia de dados em trânsito

A criptografia de dados em trânsito garante que os dados do MongoDB sejam protegidos entre os clientes (ou seja, o servidor de aplicativos) e o servidor de banco de dados e entre os servidores de banco de dados na arquitetura MongoDB ReplicaSet ou ShardedCluster. O MongoDB usa certificados SSL/TLS, gerados como certificados autoassinados ou certificados emitidos pela Autoridade de Certificação.

A melhor maneira é usar o certificado de uma autoridade de certificação, pois permitirá que os drivers do MongoDB verifiquem o host com a Autoridade de certificação, o que significa que haverá uma validação da identidade do servidor para evitar man-in -ataque do meio. Você ainda pode usar o certificado autoassinado em uma rede confiável.

A criptografia MongoDB SSL/TLS deve usar as cifras TLS/SSL com uma chave mínima de 128 bits. A partir do MongoDB versão 4.2 e superior, há um novo parâmetro chamado net.tls. Ele fornece a mesma funcionalidade do net.ssl. A configuração no arquivo mongod.conf conforme mostrado abaixo:

net:
   tls:
      mode: requireTLS
      certificateKeyFile: /etc/ssl/mongodb.pem


Enquanto se quisermos adicionar a Validação do Certificado do Cliente, só precisamos adicionar o parâmetro CAFile da seguinte forma:


net:
         tls:
            mode: requireTLS
            certificateKeyFile: /etc/ssl/mongodb.pem
            CAFile: /etc/ssl/caClientCert.pem

Com a configuração acima, as conexões MongoDB SSL/TLS exigem certificados válidos dos clientes e o cliente deve especificar a conexão SSL/TLS e apresentar os arquivos de chave de certificado.

 Na configuração acima, usamos net.tls que existe no MongoDB 4.2. Para a versão acima, podemos usar a configuração net.ssl ​​conforme mostrado abaixo:

net:
   ssl:
      mode: requireSSL
      PEMKeyFile: /etc/ssl/mongodb.pem

E adicionar a Validação de Certificado de Cliente é semelhante com a configuração do net.tls. Basta adicionar o parâmetro CAFile conforme mostrado abaixo:

net:
   ssl:
      mode: requireSSL
      PEMKeyFile: /etc/ssl/mongodb.pem
      CAFile: /etc/ssl/caClientCert.pem


Criptografia de dados em repouso

Falando sobre criptografia de dados em repouso, existem vários métodos de criptografia de dados do MongoDB que são:

  • Criptografia do Mecanismo de Armazenamento de Banco de Dados

MongoDB fornece criptografia nativa no mecanismo de armazenamento WiredTiger. A criptografia de resto de dados requer proteção de duas chaves para os dados, que são a chave mestra usada para criptografar os dados e a chave mestra usada para criptografar as chaves do banco de dados. A criptografia usa o padrão de criptografia avançada AES256-CBC. Ele usa chaves assimétricas que são a mesma chave para criptografar e descriptografar os dados. Está disponível apenas na Enterprise Edition a partir da versão 3.2 e superior.

Percona Server para MongoDB tem criptografia de dados em repouso que vem como parte do servidor de código aberto, introduzido a partir da versão 3.6. A versão atual não inclui o Key Management Interoperability Protocol (KMIP) ou o Amazon KMS. Podemos usar um arquivo de chaves local ou um servidor de gerenciamento de chaves de terceiros, como o Hashicorp Vault.

O parâmetro no Percona Server para MongoDB relacionado à criptografia é o encryptionCipherMode que podemos configurar escolhendo um dos seguintes modos de cifra:

  • AES256-CBC

  • AES256-GCM

A cifra padrão é AES256-CBC se você não aplicou explicitamente uma das opções acima. Podemos habilitar a criptografia de dados em repouso na nova instalação do Percona Server para MongoDB, mas ela não oferece suporte a serviços MongoDB existentes.

  • Criptografia de disco/armazenamento

A criptografia de armazenamento é a criptografia da mídia de armazenamento. Podemos usar criptografia de disco baseada em Linux, como LUKS, para criptografar o volume de dados do disco ou, se usarmos um ambiente de nuvem, pode haver uma opção de criptografia. Por exemplo, na AWS é possível ter armazenamento em bloco criptografado, bem como armazenamento S3.

  • Criptografia baseada em API

A criptografia baseada em API usa software de criptografia de terceiros ou o aplicativo fornece um algoritmo para criptografar os dados antes de serem armazenados no banco de dados MongoDB. Todo o processo é tratado pela camada de aplicação.