MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Jak używać szyfrowania do ochrony danych MongoDB?

W przypadku wielu rodzajów danych przechowywanych w bazie danych, czasami możemy mieć do czynienia z danymi poufnymi, które mogą obejmować dane karty kredytowej, dane finansowe, dane osobowe. Te dane PII (osobiste informacje identyfikujące) podlegają przepisom, np. PCI DSS, HIPAA lub GDPR, które musimy chronić i zapewnić poufność, integralność i dostępność.

Szyfrowanie danych jest częścią architektury MongoDB pod kątem implementacji zabezpieczeń w środowiskach produkcyjnych. Celem szyfrowania danych jest dodanie większej liczby zabezpieczeń dla bezpieczeństwa danych, zwłaszcza przed zagrożeniami wewnętrznymi. Blokujemy usługę i porty bazy danych, utrzymujemy listę kontroli dostępu, która może uzyskać dostęp i wykonywać jakie operacje w bazie danych, oraz włączamy szyfrowanie, aby chronić przed sniffingiem podczas transmisji sieciowej lub podczas przechowywania danych. W tym blogu omówimy, jak korzystać z szyfrowania w MongoDB.

Szyfrowanie danych podczas przesyłania

Szyfrowanie danych w trakcie przesyłania zapewnia bezpieczeństwo danych MongoDB między klientami (tj. serwerem aplikacji) a serwerem bazy danych oraz między serwerami bazy danych w architekturze MongoDB ReplicaSet lub ShardedCluster. MongoDB używa certyfikatów SSL/TLS, generowanych jako certyfikaty samopodpisane lub certyfikaty wydawane przez urząd certyfikacji.

Najlepszym sposobem jest użycie certyfikatu z urzędu certyfikacji, ponieważ umożliwi to sterownikom MongoDB sprawdzenie hosta w urzędzie certyfikacji, co oznacza, że ​​zostanie przeprowadzona weryfikacja tożsamości serwera, aby uniknąć man-in - środkowy atak. Nadal możesz używać samopodpisanego certyfikatu w zaufanej sieci.

Szyfrowanie MongoDB SSL/TLS musi używać szyfrów TLS/SSL z minimum 128-bitowym kluczem. Począwszy od MongoDB w wersji 4.2 i nowszych, pojawił się nowy parametr o nazwie net.tls. Zapewnia taką samą funkcjonalność jak net.ssl. Konfiguracja w pliku mongod.conf, jak pokazano poniżej:

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

Podczas gdy chcemy dodać Walidację certyfikatu klienta, wystarczy dodać parametr CAFile w następujący sposób:

      

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

W powyższej konfiguracji połączenia MongoDB SSL/TLS wymagają ważnych certyfikatów od klientów, a klient musi określić połączenie SSL/TLS i przedstawić pliki kluczy certyfikatów.

 W powyższej konfiguracji używamy net.tls, który istnieje w MongoDB 4.2. Dla powyższej wersji możemy użyć konfiguracji net.ssl, jak pokazano poniżej:

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

Dodawanie walidacji certyfikatu klienta jest podobne z konfiguracją net.tls. Wystarczy dodać parametr CAFile, jak pokazano poniżej:

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

Szyfrowanie danych w spoczynku

Mówiąc o szyfrowaniu danych w spoczynku, istnieje kilka metod szyfrowania danych MongoDB: 

  • Szyfrowanie silnika pamięci masowej bazy danych

MongoDB zapewnia natywne szyfrowanie w aparacie pamięci WiredTiger. Szyfrowanie reszty danych wymaga ochrony danych dwoma kluczami, które są kluczem głównym używanym do szyfrowania danych i kluczem głównym używanym do szyfrowania kluczy bazy danych. Szyfrowanie wykorzystuje AES256-CBC Advanced Encryption Standard. Wykorzystuje klucze asymetryczne, które są tym samym kluczem do szyfrowania i odszyfrowywania danych. Jest dostępny tylko w wersji Enterprise, począwszy od wersji 3.2 i nowszych.

Percona Server dla MongoDB ma szyfrowanie danych w stanie spoczynku, które jest częścią serwera open source, wprowadzonego od wersji 3.6. Obecna wersja nie zawiera protokołu KMIP (Key Management Interoperability Protocol) ani Amazon KMS. Możemy użyć lokalnego pliku klucza lub serwera zarządzania kluczami innej firmy, takiego jak Hashicorp Vault.

Parametr w Percona Server dla MongoDB związany z szyfrowaniem to cryptoCipherMode, który możemy skonfigurować, wybierając jeden z następujących trybów szyfrowania:

  • AES256-CBC

  • AES256-GCM

Domyślny szyfr to AES256-CBC, jeśli nie zastosowałeś wyraźnie jednego z powyższych. Możemy włączyć szyfrowanie danych w spoczynku na nowym serwerze Percona Server do instalacji MongoDB, ale nie obsługuje on istniejących usług MongoDB.

  • Szyfrowanie dysków/magazynów

Szyfrowanie pamięci to szyfrowanie nośnika pamięci. Możemy użyć szyfrowania dysku opartego na systemie Linux, takiego jak LUKS, do zaszyfrowania woluminu danych na dysku, lub jeśli korzystamy ze środowiska chmury, może istnieć opcja szyfrowania. Na przykład w AWS można mieć zaszyfrowaną pamięć blokową, a także pamięć S3.

  • Szyfrowanie oparte na API

Szyfrowanie oparte na API wykorzystuje oprogramowanie szyfrujące innej firmy lub aplikacja zapewnia algorytm do szyfrowania danych przed ich zapisaniem w bazie danych MongoDB. Cały proces jest obsługiwany przez warstwę aplikacji.


  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Graficzne bazy danych a dokumentowe bazy danych a potrójne magazyny

  2. Jak mogę posortować kolekcję Meteor według czasu wstawienia?

  3. Zapytanie po wypełnieniu w Mongoose

  4. Zrozumienie indeksów MongoDB

  5. MongoDB zmienia nazwę pola bazy danych w tablicy