V tomto článku se naučíme konfigurovat šifrování na úrovni databáze pro MariaDB.
Začínáme
Šifrování dat v klidu vyžaduje šifrovací modul spolu se správou klíčů. Šifrovací plugin je zodpovědný za správu šifrovacího klíče i za šifrování / dešifrování dat.
MariaDB poskytuje tři řešení pro správu šifrovacích klíčů, takže to, jak vaše databáze spravují šifrovací klíč, závisí na použitém řešení. Tento kurz předvede šifrování na úrovni databáze pomocí řešení MariaDB File Key Management. Tento plugin však neposkytuje funkci rotace kláves.
Pokud používáte server LAMP, soubory pro přidání tohoto pluginu jsou umístěny v „/ Opt / lampa“ adresář. Pokud ne, provedou se změny v souboru „/ Etc / mysql / conf.d “ složku.
Vytváření šifrovacích klíčů
Před šifrováním databáze pomocí pluginu File key management plugin musíme vytvořit soubory obsahující šifrovací klíče. Vytvoříme soubor se dvěma informacemi. To je šifrovací klíč v hexadecimálním formátu spolu s identifikátorem 32bitového klíče.
Vytvoříme novou složku „Klíče“ v „/ Etc / mysql /“ adresář a pomocí nástroje OpenSSL náhodně vygenerujte 3 hexadecimální řetězce a přesměrujte výstup na nový soubor v adresáři klíče složku. Zadejte následující příkazy:
[chráněno e-mailem]: ~ $ sudo mkdir / etc / mysql / keys[chráněno e-mailem]: ~ $ echo -n "1;" $ openssl rand hex 32> / etc / mysql / keys / enc_keys "
[chráněno e-mailem]: ~ $ echo -n "2;" $ openssl rand hex 32> / etc / mysql / keys / enc_keys "
[chráněno e-mailem]: ~ $ echo -n "3;" $ openssl rand hex 32> / etc / mysql / keys / enc_keys "
Kde 1,2,3 jsou identifikátory klíčů; zahrneme je k vytvoření odkazu na šifrovací klíče pomocí proměnné innodb_default_encryption_key_id v MariaDB. Výstupní soubor bude vypadat takto:
1; 01495ba35e1c9602e14e40bd6de41bb82; 3cffa4a5d288e90108394dbf639664f8
3; 9953297ed1a58ae837486318840f5f1d
Šifrování klíčových souborů
Můžeme snadno nastavit systémovou proměnnou file_key_management_filename s příslušnou cestou uvnitř pluginu File Key Management. Není však bezpečné nechat klíče v prostém textu. Můžeme riziko do určité míry snížit přidělením oprávnění k souboru, ale to nestačí.
Nyní zašifrujeme dříve vytvořené klíče pomocí náhodně generovaného hesla. Naproti tomu velikost klíče se může pohybovat od 128/192/256 bitů.
[chráněno e-mailem]: ~ $ openssl rand -hex 192> / etc / mysql / keys / enc_paswd.klíčProto budeme používat openssl příloha příkaz v terminálu k zašifrování enc_key.txt soubor do enc_key.příloha, pomocí šifrovacího klíče vytvořeného výše. Kromě toho MariaDB podporuje pouze šifrovací klíče CBC v režimu AES pro šifrování.
[chráněno e-mailem]: ~ $ openssl enc -aes-256-cbc -md sha1 -pass soubor: / etc / mysql / keys / enc_paswd.key -in / etc / mysql / keys / enc_key.txt -out / etc / mysql / keys / enc_key.enc && sudo rm / etc / mysql / keys / enc_key.txtTaké mazáme naše enc_keys.txt soubor, protože již není vyžadován. Kromě toho můžeme vždy dešifrovat naše data v MariaDB, pokud je náš soubor hesel zabezpečený.
Konfigurace pluginu pro správu klíčů souborů
Nyní nakonfigurujeme MariaDB pomocí pluginu File Key Management přidáním následujících proměnných do konfiguračního souboru. Konfigurační soubory jsou obvykle umístěny v '/ etc / mysql' a přečíst všechny .cnf soubory ve výchozím nastavení. Nebo můžete vytvořit nový konfigurační soubor „Mariadb_enc.CNF “ pod '/ etc / mysql / conf.d / adresář.
Nyní může váš konfigurační soubor vypadat úplně jinak. Přidejte však tyto proměnné šifrování pod [sqld]. Pokud je klíč šifrovaný, vyžaduje plugin ke konfiguraci dvě systémové proměnné, tj.E., file_key_management_filename a file_key_management_filekey.
[sqld]# Plugin pro správu klíčů souborů
plugin_load_add = file_key_management
file_key_management = ON file_key_management_encryption_algorithm = aes_cbc file_key_management_filename = / etc / mysql / keys / enc_keys.příloha
file_key_management_filekey = / etc / mysql / keys / enc_paswd.klíč
# Nastavení šifrování InnoDB / XtraDB
innodb_default_encryption_key_id = 1
innodb_encrypt_tables = ZAPNUTO
innodb_encrypt_log = ZAPNUTO
innodb_encryption_threads = 4
# Nastavení šifrování Aria
aria_encrypt_tables = ZAPNUTO
# Temp & Log Encryption
encrypt-tmp-disk-tables = 1
encrypt-tmp-files = 1
encrypt_binlog = ZAPNUTO
Podrobnosti o každé systémové proměnné najdete na oficiálním webu MariaDB.
Zabezpečení souboru hesla
Změníme svá oprávnění k adresáři MySQL, abychom zabezpečili heslo a další citlivé soubory. Vlastnictví MariaDB bude změněno na aktuálního uživatele, kterým je v Ubuntu mysql.
sudo chown -R mysql: root / etc / mysql / keyssudo chmod 500 / etc / mysql / keys /
Nyní změníme heslo a oprávnění šifrovaného souboru na
sudo chown mysql: root / etc / mysql / keys / enc_paswd.key / etc / mysql / keys / enc_key.přílohasudo chmod 600 / etc / mysql / keys / enc_paswd.key / etc / mysql / keys / enc_key.příloha
Nyní restartujte databázovou službu.
sudo služba mysql restartZávěr
Tento článek se dozvěděl, jak je šifrování na úrovni databáze potřeba hodiny a jak můžeme nakonfigurovat šifrování v klidu v MariaDB. Jedinou nevýhodou pluginu File Key Management je, že nepodporuje rotaci klíčů. Kromě tohoto pluginu však existuje mnoho dalších šifrovacích řešení pro správu klíčů, tj.E., AWS Key Management Plugin a Eperi Key Management Plugin. Další podrobnosti o těchto pluginech najdete na oficiálních stránkách MariaDB.