sql >> Databáze >  >> NoSQL >> MongoDB

Jak používat šifrování k ochraně dat MongoDB

S mnoha druhy dat uložených v databázi můžeme někdy pracovat s důvěrnými údaji, mezi které mohou patřit údaje o kreditních kartách, finanční záznamy a osobní údaje. Tyto údaje PII (Personal Identifiable Information) podléhají regulaci, např.:PCI DSS, HIPAA nebo GDPR, které musíme chránit a zajistit důvěrnost, integritu a dostupnost.

Šifrování dat je součástí architektury MongoDB pro implementaci zabezpečení v produkčních prostředích. Cílem šifrování dat je přidat další zabezpečení pro zabezpečení dat, zejména před hrozbami zevnitř. Uzamkneme službu a porty databáze, udržujeme seznam řízení přístupu, kdo může přistupovat k databázi a jaké operace s ní provádět, a umožňujeme šifrování, abychom chránili před sniffováním během síťového přenosu nebo při ukládání dat. V tomto blogu probereme, jak používat šifrování v MongoDB.

Šifrování dat při přenosu

Šifrování dat při přenosu zajišťuje zabezpečení dat MongoDB mezi klienty (tj. aplikačním serverem) a databázovým serverem a mezi databázovými servery v architektuře MongoDB ReplicaSet nebo ShardedCluster. MongoDB používá certifikáty SSL/TLS, buď vygenerované jako certifikáty s vlastním podpisem, nebo certifikáty, které vydává certifikační autorita.

Nejlepším způsobem je použít certifikát od certifikační autority, protože to umožní ovladačům MongoDB zkontrolovat hostitele u certifikační autority, což znamená, že dojde k ověření identity serveru, aby se zabránilo vniknutí - střední útok. Certifikát s vlastním podpisem můžete stále používat v důvěryhodné síti.

Šifrování MongoDB SSL/TLS musí používat šifry TLS/SSL s minimálně 128bitovým klíčem. Počínaje MongoDB verze 4.2 a vyšší je zde nový parametr nazvaný net.tls. Poskytuje stejné funkce jako net.ssl. Konfigurace v souboru mongod.conf, jak je znázorněno níže:

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

Pokud chceme přidat ověření klientského certifikátu, stačí přidat parametr CAFile takto:

      

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

S výše uvedenou konfigurací vyžadují připojení MongoDB SSL/TLS platné certifikáty od klientů a klient musí specifikovat připojení SSL/TLS a předložit soubory certifikátů.

 Ve výše uvedené konfiguraci používáme net.tls, který existuje na MongoDB 4.2. Pro výše uvedenou verzi můžeme použít konfiguraci net.ssl, jak je uvedeno níže:

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

Přidání ověření klientského certifikátu je podobné jako u konfigurace net.tls. Stačí přidat parametr CAFile, jak je znázorněno níže:

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

Šifrování dat v klidu

Pokud mluvíme o šifrování dat v klidu, existuje několik metod šifrování dat MongoDB, které jsou: 

  • Šifrování databázového úložiště

MongoDB poskytuje nativní šifrování na modulu úložiště WiredTiger. Šifrování datového zbytku vyžaduje ochranu dat dvěma klíči, kterými jsou hlavní klíč používaný k šifrování dat a hlavní klíč používaný k šifrování databázových klíčů. Šifrování používá AES256-CBC Advanced Encryption Standard. Používá asymetrické klíče, což je stejný klíč pro šifrování a dešifrování dat. Je k dispozici pouze ve verzi Enterprise Edition počínaje verzí 3.2 a vyšší.

Percona Server pro MongoDB má šifrování dat v klidu, které je součástí open source serveru, zavedeného od verze 3.6. Aktuální verze nezahrnuje protokol Key Management Interoperability Protocol (KMIP) ani Amazon KMS. Můžeme použít místní klíčový soubor nebo server pro správu klíčů třetí strany, jako je Hashicorp Vault.

Parametr v Percona Server pro MongoDB související se šifrováním je encryptionCipherMode, který můžeme nakonfigurovat výběrem jednoho z následujících režimů šifrování:

  • AES256-CBC

  • AES256-GCM

Výchozí šifra je AES256-CBC, pokud jste výslovně nepoužili jednu z výše uvedených možností. Můžeme povolit šifrování dat v klidu na nové instalaci Percona Server pro MongoDB, ale nepodporuje stávající služby MongoDB.

  • Šifrování disku/úložišť

Šifrování úložiště je šifrování úložného média. K šifrování datového objemu disku můžeme použít šifrování disku založené na Linuxu, jako je LUKS, nebo pokud používáme cloudové prostředí, může existovat možnost šifrování. Například v AWS je možné mít šifrované úložiště bloků i úložiště S3.

  • Šifrování založené na rozhraní API

Šifrování založené na rozhraní API používá šifrovací software třetí strany nebo aplikace poskytuje algoritmus pro šifrování dat před jejich uložením do databáze MongoDB. Celý proces je řízen aplikační vrstvou.


  1. Může být příkaz redis incr omezen na konkrétní číslo?

  2. Trvalý objekt Python v paměti pro server nginx/uwsgi

  3. MISCONF Redis je nakonfigurován pro ukládání snímků RDB

  4. MongoDB $ ln