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.