În acest articol, vom învăța să configurăm criptarea la nivel de bază de date pentru MariaDB.
Noțiuni de bază
Criptarea datelor în repaus necesită un plugin de criptare împreună cu gestionarea cheilor. Pluginul de criptare este responsabil pentru gestionarea cheii de criptare, precum și pentru criptarea / decriptarea datelor.
MariaDB oferă trei soluții de gestionare a cheilor de criptare, astfel încât modul în care gestionați bazele de date cheie de criptare depinde de soluția pe care o utilizați. Acest tutorial va demonstra criptarea la nivel de bază de date utilizând soluția MariaDB File Key Management. Cu toate acestea, acest plugin nu oferă o caracteristică de rotație a cheii.
Dacă utilizați un server LAMP, fișierele pentru a adăuga acest plugin se află în „/ Opt / lampă” director. Dacă nu, atunci modificările se fac în „/ Etc / mysql / conf.d ” pliant.
Crearea cheilor de criptare
Înainte de a cripta baza de date folosind pluginul de gestionare a cheilor de fișiere, trebuie să creăm fișierele care conțin chei de criptare. Vom crea un fișier cu două informații. Aceasta este o cheie de criptare într-un format codificat hexagonal împreună cu un identificator de cheie pe 32 de biți.
Vom crea un folder nou „Chei” în „/ Etc / mysql /” director și utilizați utilitarul OpenSSL pentru a genera aleatoriu 3 șiruri Hex și pentru a redirecționa ieșirea către un nou fișier din chei pliant. Tastați următoarele comenzi:
[protejat prin e-mail]: ~ $ sudo mkdir / etc / mysql / keys[e-mail protejat]: ~ $ echo -n "1;" $ openssl rand hex 32> / etc / mysql / keys / enc_keys "
[e-mail protejat]: ~ $ echo -n "2;" $ openssl rand hex 32> / etc / mysql / keys / enc_keys "
[email protected]: ~ $ echo -n "3;" $ openssl rand hex 32> / etc / mysql / keys / enc_keys "
Unde 1,2,3 sunt identificatorii cheie; le includem pentru a crea o referință la cheile de criptare utilizând variabila innodb_default_encryption_key_id în MariaDB. Fișierul de ieșire va arăta astfel:
1; 01495ba35e1c9602e14e40bd6de41bb82; 3cffa4a5d288e90108394dbf639664f8
3; 9953297ed1a58ae837486318840f5f1d
Criptare fișier cheie
Putem seta cu ușurință variabila de sistem file_key_management_filename cu calea corespunzătoare din pluginul File Key Management. Dar nu este sigur să lăsați tastele în text simplu. Putem reduce riscul într-o oarecare măsură prin atribuirea permisiunilor de fișiere, dar acest lucru nu este suficient.
Acum vom cripta cheile create anterior folosind o parolă generată aleatoriu. În schimb, dimensiunea cheii poate varia de la 128/192/256-biți.
[e-mail protejat]: ~ $ openssl rand -hex 192> / etc / mysql / keys / enc_paswd.cheiePrin urmare, vom folosi openssl enc comanda din terminal pentru a cripta fișierul enc_key.txt trimiteți la enc_key.enc, folosind cheia de criptare creată mai sus. În plus, MariaDB acceptă doar modul CBC al AES pentru a cripta cheile sale de criptare.
[protejat prin e-mail]: ~ $ openssl enc -aes-256-cbc -md sha1 -pass file: / etc / mysql / keys / enc_paswd.cheie -in / etc / mysql / keys / enc_key.txt -out / etc / mysql / keys / enc_key.enc && sudo rm / etc / mysql / keys / enc_key.txtȘtergem de asemenea enc_keys.txt fișier deoarece nu mai este necesar. În plus, putem oricând să ne decriptăm datele în MariaDB, atâta timp cât fișierul de parolă este sigur.
Configurarea pluginului de gestionare a cheilor de fișiere
Acum vom configura MariaDB cu pluginul File Key Management adăugând următoarele variabile în fișierul de configurare. Fișierele de configurare sunt de obicei localizate în „/ etc / mysql” și citiți toate .fișiere cnf în mod implicit. Sau puteți crea un nou fișier de configurare „Mariadb_enc.cnf ” sub '/ etc / mysql / conf.d / director.
Acum fișierul dvs. de configurare poate arăta complet diferit de acesta. Cu toate acestea, adăugați aceste variabile de criptare în [sqld]. Dacă cheia este criptată, pluginul necesită două variabile de sistem pentru configurare, i.e., file_key_management_filename și file_key_management_filekey.
[sqld]#File Plugin de gestionare a cheilor
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.enc
file_key_management_filekey = / etc / mysql / keys / enc_paswd.cheie
# Configurare criptare InnoDB / XtraDB
innodb_default_encryption_key_id = 1
innodb_encrypt_tables = ACTIVAT
innodb_encrypt_log = ACTIVAT
innodb_encryption_threads = 4
# Configurare criptare Aria
aria_encrypt_tables = ON
# Criptare Temp & Log
encrypt-tmp-disk-tables = 1
encrypt-tmp-files = 1
encrypt_binlog = ACTIVAT
Puteți găsi detalii pentru fiecare variabilă de sistem de pe site-ul oficial MariaDB.
Securizarea fișierului cu parolă
Vom modifica permisiunile din directorul MySQL pentru a securiza parola și alte fișiere sensibile. Proprietatea asupra MariaDB va fi schimbată la utilizatorul actual, care este pe Ubuntu mysql.
sudo chown -R mysql: root / etc / mysql / keyssudo chmod 500 / etc / mysql / keys /
Acum vom schimba parola și permisiunile de fișiere criptate în
sudo chown mysql: root / etc / mysql / keys / enc_paswd.key / etc / mysql / keys / enc_key.encsudo chmod 600 / etc / mysql / keys / enc_paswd.key / etc / mysql / keys / enc_key.enc
Acum reporniți serviciul de baze de date.
sudo service mysql restartConcluzie
Acest articol a aflat cum criptarea la nivel de bază de date este necesitatea orei și cum putem configura criptarea în repaus în MariaDB. Singurul dezavantaj al pluginului File Key Management este că nu acceptă rotirea cheilor. Cu toate acestea, în afară de acest plugin, multe alte soluții de criptare de gestionare a cheilor, i.e., AWS Key Management Plugin și Eperi Key Management Plugin. Puteți găsi mai multe detalii despre aceste pluginuri de pe site-ul oficial al MariaDB.