Crittografia a riposo in Mariadb

Crittografia a riposo in Mariadb
Crittografia-Rest impedisce a un utente malintenzionato di accedere ai dati crittografati archiviati sul disco anche se ha accesso al sistema. I database open source MySQL e MARIADB ora supportano la funzionalità di crittografia-rest che soddisfa le esigenze della nuova legislazione sulla protezione dei dati dell'UE. La crittografia mysql a riposo è leggermente diversa da MariaDB poiché MySQL fornisce solo crittografia per tabelle innodb. Mentre MariaDB offre anche un'opzione per crittografare file come registri di ripetizione, registri lenti, registri di audit, registri di errore, ecc. Tuttavia, entrambi non possono crittografare i dati su una RAM e proteggerli da una radice dannosa.

In questo articolo, impareremo a configurare la crittografia a livello di database per MariaDB.

Iniziare

I dati a riposo crittografia richiedono un plug -in di crittografia insieme alla gestione delle chiavi. Il plug -in di crittografia è responsabile della gestione della chiave di crittografia e della crittografia/decritting 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 si sta utilizzando. Questo tutorial dimostrerà la crittografia a livello di database utilizzando la soluzione di gestione delle chiavi del file MARIADB. Tuttavia, questo plugin non fornisce una funzione di rotazione chiave.

Se si utilizza un server LAMP, i file per aggiungere questo plugin si trovano in "/Opt/lampada" directory. In caso contrario, le modifiche vengono apportate in “/Etc/mysql/conf.D" cartella.

Creazione di chiavi di crittografia

Prima di crittografare il database utilizzando il plug -in di gestione delle chiavi dei file, dobbiamo creare i file contenenti tasti di crittografia. Creeremo un file con due informazioni. Questa è una chiave di crittografia in un formato codificato con esadecimale insieme a un identificatore chiave a 32 bit.

Creeremo una nuova cartella "Chiavi" nel "/Etc/mysql/" directory e utilizzare l'utilità OpenSSL per generare casualmente 3 stringhe esadecimale e reindirizzare l'output in un nuovo file nel tasti cartella. Digita i seguenti comandi:

ubuntu@ubuntu: ~ $ sudo mkdir/etc/mysql/keys
ubuntu@ubuntu: ~ $ echo -n "1;" $ openssl rand hex 32>/etc/mysql/keys/enc_keys "
ubuntu@ubuntu: ~ $ echo -n "2;" $ openssl rand hex 32>/etc/mysql/keys/enc_keys "
ubuntu@ubuntu: ~ $ 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 sembrerà così:

1; 01495ba35E1C9602E14E40BD6DE41BB8
2; 3CFFA4A5D288E90108394DBF639664f8
3; 9953297ED1A58AE837486318840f5f1d

Crittografia dei file chiave

Possiamo facilmente impostare la variabile di sistema file_key_management_filename con il percorso appropriato all'interno del plug -in di gestione delle chiavi dei file. Ma non è sicuro lasciare le chiavi in ​​un semplice testo. Possiamo ridurre il rischio in una certa misura assegnando le autorizzazioni di file ma non è sufficiente.

Ora crittograferemo le chiavi precedentemente create utilizzando una password generata casualmente. Al contrario, la dimensione della chiave può variare da 128/192/256-bit.

ubuntu@ubuntu: ~ $ openssl rand -hex 192>/etc/mysql/keys/enc_paswd.chiave

Quindi useremo il openssl enc comando nel terminale di crittografare il enc_key.TXT file a enc_key.enc, Utilizzo del tasto di crittografia creata sopra. Inoltre, MariaDB supporta solo la modalità CBC di AES per crittografare le sue chiavi di crittografia.

ubuntu@ubuntu: ~ $ openssl enc -aes -256 -cbc -md sha1 -pass file:/etc/mysql/keys/enc_paswd.Chiave -in/etc/mysql/keys/enc_key.txt -out/etc/mysql/keys/enc_key.enc && sudo rm/etc/mysql/keys/enc_key.TXT

Eliminiamo anche il nostro enc_keys.TXT file in quanto non è più richiesto. Inoltre, possiamo sempre decrittarci i nostri dati in MariaDB fintanto che il nostro file di password è sicuro.

Configurazione del plug -in di gestione delle chiavi dei file

Ora configureremo MARIADB con il plug -in di gestione delle chiavi file aggiungendo le seguenti variabili nel file di configurazione. I file di configurazione si trovano di solito in '/etc/mysql' e leggi tutti i .file 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ò sembrare completamente diverso da questo. Tuttavia, aggiungi queste variabili di crittografia in [SQLD]. Se la chiave è crittografata, il plugin richiede due variabili di sistema per la configurazione, i.e., file_key_management_filename e file_key_management_filekey.

[sqld]
Plug -in #file Key Management
plugin_load_add = file_key_management
file_key_management = su 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
# INNODB/XTRADB Critty Setup
INNODB_DEFAULT_ENCRYPTION_KEY_ID = 1
innodb_encrypt_tables = on
INNODB_ENCRYPT_LOG = on
INNODB_ENCRYPTION_THREADS = 4
# Configurazione di crittografia aria
Aria_encrypt_tables = on
# Temp & Log Critty
Cript-TMP-Disk-Tables = 1
cript-tmp-files = 1
cript_binlog = on

Puoi trovare i dettagli per ciascuna variabile di sistema dal sito Web ufficiale MARIADB.

Garantire il file della password

Modificheremo le nostre autorizzazioni di directory MySQL per proteggere la password e altri file sensibili. La proprietà del MariaDB verrà modificata nell'utente attuale, che su Ubuntu è mysql.

sudo chown -r mysql: root/etc/mysql/tasti
sudo chmod 500/etc/mysql/keys/

Ora cambieremo la password e le autorizzazioni dei file crittografate

sudo chown mysql: root/etc/mysql/keys/enc_paswd.Chiave/etc/mysql/keys/enc_key.enc
sudo chmod 600/etc/mysql/keys/enc_paswd.Chiave/etc/mysql/keys/enc_key.enc

Ora riavvia il servizio di database.

SUD SERVIZIO MYSQL Riavvia

Conclusione

Questo articolo ha imparato come la crittografia a livello di database sia la necessità dell'ora e come possiamo configurare la crittografia-at-REST in MariaDB. L'unico inconveniente del plug -in di gestione dei tasti di file è che non supporta la rotazione dei tasti. Tuttavia, a parte questo plugin, molte altre soluzioni di crittografia della gestione delle chiavi, i.e., Plug -in per la gestione delle chiavi AWS e plug -in di gestione delle chiavi EPERI. Puoi trovare maggiori dettagli su questi plugin dal sito ufficiale di MariaDB.