In questo articolo impareremo a configurare la crittografia a livello di database per MariaDB.
Iniziare
La crittografia dei dati a riposo richiede un plug-in di crittografia insieme alla gestione delle chiavi. Il plugin di crittografia è responsabile della gestione della chiave di crittografia e della crittografia/decrittografia dei dati.
MariaDB fornisce tre soluzioni di gestione delle chiavi di crittografia, quindi il modo in cui i database gestiscono la chiave di crittografia dipende dalla soluzione che stai utilizzando. Questo tutorial dimostrerà la crittografia a livello di database utilizzando la soluzione MariaDB File Key Management. Tuttavia, questo plugin non fornisce una funzione di rotazione dei tasti.
Se stai utilizzando un server LAMP, i file per aggiungere questo plugin si trovano nella cartella “/opt/lampada” directory. In caso contrario, le modifiche vengono apportate nel “/etc/mysql/conf.d" cartella.
Creazione di chiavi di crittografia
Prima di crittografare il database utilizzando il plug-in Gestione chiavi file, è necessario creare i file contenenti le chiavi di crittografia. Creeremo un file con due informazioni. Questa è una chiave di crittografia in un formato con codifica esadecimale insieme a un identificatore di chiave a 32 bit.
Creeremo una nuova cartella "chiavi" nel “/etc/mysql/” directory e utilizzare l'utilità OpenSSL per generare casualmente 3 stringhe esadecimali e reindirizzare l'output a un nuovo file nel in chiavi cartella. Digita i seguenti comandi:
[email protected]:~$ sudo mkdir /etc/mysql/keys[email protected]:~$ echo -n "1;"$openssl rand hex 32 > /etc/mysql/keys/enc_keys"
[email protected]:~$ 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"
Dove 1,2,3 sono gli identificatori chiave; li includiamo per creare un riferimento alle chiavi di crittografia utilizzando la variabile innodb_default_encryption_key_id in MariaDB. Il file di output sarà simile a questo:
1;01495ba35e1c9602e14e40bd6de41bb82;3cffa4a5d288e90108394dbf639664f8
3;9953297ed1a58ae837486318840f5f1d
Crittografia file chiave
Possiamo facilmente impostare la variabile di sistema file_key_management_filename con il percorso appropriato all'interno del plugin File Key Management. Ma non è sicuro lasciare le chiavi in chiaro. Possiamo ridurre il rischio in una certa misura assegnando i permessi ai file, ma questo non è sufficiente.
Ora crittograferemo le chiavi create in precedenza utilizzando una password generata casualmente. Al contrario, la dimensione della chiave può variare da 128/192/256 bit.
[email protected]:~$ openssl rand -hex 192> /etc/mysql/keys/enc_paswd.chiaveQuindi useremo il openssl enc comando nel terminale per crittografare il enc_key.TXT file in enc_key.enc, utilizzando la chiave di crittografia creata sopra. Inoltre, MariaDB supporta solo la modalità CBC di AES per crittografare le sue chiavi di crittografia.
[email protected]:~$ openssl enc -aes-256-cbc -md sha1 -pass file:/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.TXTCancelliamo anche il nostro chiavi_enc.TXT file in quanto non è più necessario. Inoltre, possiamo sempre decifrare i nostri dati in MariaDB purché il nostro file di password sia sicuro.
Configurazione del plugin per la gestione delle chiavi dei file
Ora configureremo MariaDB con il plugin File Key Management aggiungendo le seguenti variabili nel file di configurazione. I file di configurazione si trovano solitamente in '/etc/mysql' e leggi tutto .cnf per impostazione predefinita. Oppure puoi creare un nuovo file di configurazione “mariadb_enc.cnf” sotto '/etc/mysql/conf.d/ directory.
Ora il tuo file di configurazione può avere un aspetto completamente diverso da questo. Tuttavia, aggiungi queste variabili di crittografia in [sqld]. Se la chiave è crittografata, il plugin richiede due variabili di sistema da configurare, i.e., file_key_management_filename e file_key_management_filekey.
[sqld]#Plugin per la gestione delle chiavi dei file
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.chiave
# Configurazione della crittografia InnoDB/XtraDB
innodb_default_encryption_key_id = 1
innodb_encrypt_tables = ON
innodb_encrypt_log = ON
innodb_encryption_threads = 4
# Configurazione della crittografia di Aria
aria_encrypt_tables = ON
# Crittografia Temp & Log
encrypt-tmp-disk-tables = 1
crittografare-tmp-file = 1
encrypt_binlog = ON
Puoi trovare i dettagli per ogni variabile di sistema dal sito ufficiale di MariaDB.
Protezione del file di password
Cambieremo i permessi della nostra directory MySQL per proteggere la password e altri file sensibili. La proprietà di MariaDB verrà cambiata all'utente corrente, che su Ubuntu è mysql.
sudo chown -R mysql:root /etc/mysql/keyssudo chmod 500 /etc/mysql/keys/
Ora cambieremo la password e i permessi dei file crittografati in
sudo chown mysql:root /etc/mysql/keys/enc_paswd.chiave /etc/mysql/keys/enc_key.encsudo chmod 600 /etc/mysql/keys/enc_paswd.chiave /etc/mysql/keys/enc_key.enc
Ora riavvia il servizio di database.
sudo service mysql riavvioConclusione
Questo articolo ha appreso come la crittografia a livello di database sia la necessità del momento e come possiamo configurare la crittografia a riposo in MariaDB. L'unico inconveniente del plugin File Key Management è che non supporta la rotazione delle chiavi. Tuttavia, a parte questo plugin, molte altre soluzioni di crittografia per la gestione delle chiavi, i.e., Plugin AWS Key Management e Plugin Eperi Key Management. Puoi trovare maggiori dettagli su questi plugin dal sito ufficiale di MariaDB.