sql >> Databáze >  >> RDS >> MariaDB

Úvahy o šifrování dat v klidu pro MariaDB

Bezpečnost dat je zásadní v době GDPR, PCI DSS nebo HIPPA. Aby bylo možné dodržet předpisy, je třeba dbát mimořádné opatrnosti, pokud jde o to, jak by měla být data uchovávána a chráněna. Data mohou být obvykle v klidu nebo v přenosu. Data v přenosu jsou data přenášená z databáze nebo do databáze. Výsledky dotazů odeslané klientovi nebo aplikaci nebo replikovaná data mezi uzly klastru jsou příklady případů, kdy jsou data přenášena. Máme tendenci zabezpečit data v tomto stavu pomocí SSL nebo TLS – šifrovaných spojení mezi databázovými uzly nebo databází a klientem.

Na druhé straně spektra máme data v klidu – řekli bychom, že většina dat je v danou chvíli v klidu. Hovoříme zde o datech uložených na disku v tabulkových prostorech, různých datových strukturách (gcache buffer, redo logs) a logech (binární a relay logy). Podívejme se na úvahy o tomto tématu v MariaDB.

Co šifrovat v MariaDB?

V ideálním případě je potřeba vše zašifrovat. Databáze ukládají data na různá místa a různými způsoby, jak je uvedeno výše. Největší sada dat je uložena v tabulkových prostorech – to je „konečné“ místo, kde jsou data uložena. Je zřejmé, že je možné šifrovat tabulkové prostory - jinak by celá funkce byla zbytečná. MariaDB může ukládat data do jednoho sdíleného tabulkového prostoru, několik z nich nebo každá tabulka může být uložena v samostatném tabulkovém prostoru – všechny tyto scénáře jsou podporovány. Uživatelé mají určitou úroveň flexibility při výběru toho, co šifrovat. Šifrovat můžete vše, jednotlivé tabulky nebo vše kromě některých jednotlivých tabulek.

Opakování protokolu MariaDB InnoDB

Další strukturou, která ukládá data, je InnoDB redo log. InnoDB redo log je místo, kam se zapisují data po upgradu daného řádku. Data z redo logu budou nakonec přenesena do tabulkového prostoru, ale prozatím InnoDB redo log obsahuje všechny úpravy, které se nedávno staly. Jak si dokážete představit, tato data jsou také kritická a měla by být chráněna – MariaDB vám umožňuje šifrovat protokol InnoDB redo.

Binární protokoly MariaDB

Binární protokoly (stejně jako protokoly přenosu) ukládají informace o provedených dotazech, které upravují data. Jelikož nám obsažené informace umožňují rekonstruovat aktuální stav řádku, který prošel úpravami, jedná se o další formu dat, která by měla být chráněna a šifrována. Binární i přenosové protokoly lze šifrovat v MariaDB.

Mezipaměť Galera

Galera cache (gcache) je vyrovnávací paměť na disku v Galera Cluster, která ukládá informace o provedených modifikacích. Používá se v případě selhání uzlu nebo dočasných problémů se sítí, aby umožnil uzlům, které se připojí ke clusteru, dohnat pouze data, která jim chybí, a vyhnout se přenosu celé datové sady. Podobně jako binární protokoly nebo redo protokoly obsahuje gcache seznam úprav a jako takový jej lze použít k obnově a sestavení částí dat. V komunitní verzi MariaDB Galera Cluster nelze gcache zašifrovat. Taková možnost bude dostupná ve verzi Enterprise MariaDB Galera Cluster.

Co nelze v MariaDB zašifrovat?

Stále existují místa, kde se mohou zobrazovat části dat, které nelze zašifrovat, alespoň nyní, v MariaDB. Za prvé, protokoly chyb mohou obsahovat vzorky dotazů, které mohou potenciálně odhalit některá data. Je nemožné šifrovat chybové protokoly, ale je možné přesměrovat chybový protokol do syslog a implementovat nějaký ochranný mechanismus mimo MariaDB.

Protokoly z modulu Audit Plugin

Audit Plugin také generuje protokol – tento protokol může obsahovat citlivé informace, včetně přesných dotazů, které byly v databázi provedeny. Tento protokol není možné zašifrovat, ale lze jej přesměrovat do syslogu a zašifrovat tam.

Protokoly dotazů

Obecné a pomalé protokoly dotazů – tyto protokoly budou obsahovat dotazy (nebo alespoň jejich ukázky), které provedla MariaDB. Od této chvíle není možné tyto protokoly šifrovat.

Pool vyrovnávací paměti InnoDB

Paměť – MariaDB provádí šifrování pouze pro stránky, které jsou uloženy na disku. Všechna data, která jsou uložena ve fondu vyrovnávací paměti InnoDB, budou nešifrovaná. InnoDB buffer pool je určen k uchování řádků nedávno upravených nebo zpřístupněných SELECT dotazem - tyto řádky budou zjevně obsahovat vzorky dat. Od této chvíle neexistuje žádná možnost šifrování fondu vyrovnávací paměti InnoDB v MariaDB. Mějte prosím na paměti, že ke čtení živé paměti by byl vyžadován přístup do systému. Není to triviální úkol, i když ani to není nemožné.

Mějte na paměti, že jsme probrali možnosti šifrování zahrnuté v MariaDB. Vždy existuje možnost použít další vrstvu šifrování. Například šifrování celého úložiště způsobí, že protokoly nebudou čitelné pro nikoho, kdo by měl fyzický přístup k disku. Na druhou stranu neochrání data před někým, kdo se může přihlásit do systému.

Kompatibilita s externími nástroji

Další věcí, kterou je třeba zvážit, je kompatibilita. Pokud se rozhodnete zašifrovat svou MariaDB, musíte mít na paměti, že to může ovlivnit způsob, jakým pracujete. Ke zpracování dat a vytvoření zálohy nebo k práci s binárními protokoly není možné používat externí nástroje jako XtraBackup nebo mysqlbinlog. Budete se muset držet nástrojů vytvořených MariaDB (jako Mariabackup), které jsou napsány s ohledem na šifrovací mechanismus. Mohou zpracovávat data v klidu. Šifrování je implementováno v MariaDB.

Plánování procesu šifrování

Tato část nebude podrobně rozebírat proces, ale zabývá se tím, co byste měli zvážit při plánování šifrování, jako jsou zdroje a čas. Po dobu trvání procesu se zvýší využití CPU a také I/O aktivita. Z uživatelského hlediska se to všechno týká nastavení konfigurace a následného provádění příkazů ALTER pro opětovné sestavení a zašifrování existujících tabulek. U velkých databází to samo o sobě může být významnou výzvou, která by vyžadovala plánování. Změny schémat mohou představovat vážnou zátěž a doporučuje se používat nástroje jako pt-online-schema-change, abyste snížili jejich dopad na produkční systémy a získali lepší kontrolu nad procesem.

Poslední myšlenky

Jak jsme zmínili, data jsou kritická pro všechny organizace a je zásadní zajistit, aby byla data v bezpečí a chráněna. Šifrování klidových dat je jedním z důležitých prvků celého obrazu. Rádi bychom od vás slyšeli o vašich zkušenostech s šifrováním dat v klidu v MariaDB. Pokud se chcete podělit o své myšlenky, můžete níže zanechat komentář.


  1. Operand by měl obsahovat 1 sloupec – MySQL NENÍ IN

  2. Vrácení primárních klíčů z propojeného serveru v SQL Server (příklady T-SQL)

  3. MySQL – Jak zrušit tabulku, pokud existuje v databázi?

  4. Zjistěte, na jakém operačním systému běží SQL Server (příklad T-SQL)