Kryptering i ro i MariaDB

Kryptering i ro i MariaDB
Kryptering-at-rese-forhindrer en angriper i å få tilgang til krypterte data som er lagret på disken selv om han har tilgang til systemet. Open source-databasene MySQL og MariaDB støtter nå Encryption-at Rest-funksjonen som oppfyller kravene til ny EU-lovgivningslovgivning. MySQL -kryptering i ro er litt forskjellig fra MariaDB, da MySQL bare gir kryptering for InnoDB -tabeller. Mens MariaDB også gir et alternativ til å kryptere filer som omforming av logger, langsomme logger, revisjonslogger, feillogger osv. Begge kan imidlertid ikke kryptere data på en RAM og beskytte dem mot en ondsinnet rot.

I denne artikkelen lærer vi å konfigurere kryptering på databasenivå for MariaDB.

Starter

Dataene ved hvilekryptering krever en krypteringsplugin sammen med nøkkeladministrasjonen. Krypteringspluginen er ansvarlig for å administrere krypteringsnøkkelen så vel som kryptering/dekryptering av dataene.

MariADB gir tre krypteringsnøkkeladministrasjonsløsninger, så hvordan du databaser administrerer krypteringsnøkkel, avhenger av løsningen du bruker. Denne opplæringen vil demonstrere kryptering på databasenivå ved hjelp av MariADB File Key Management-løsningen. Imidlertid gir denne pluginen ikke en nøkkelrotasjonsfunksjon.

Hvis du bruker en LAMP -server, er filene for å legge til denne plugin -en i “/Opt/lampe” katalog. Hvis ikke, blir endringene gjort i “/Etc/mysql/conf.D ” mappe.

Opprette krypteringsnøkler

Før du krypterer databasen ved hjelp av filstyringsplugin for filen, må vi opprette filene som inneholder krypteringsnøkler. Vi oppretter en fil med to informasjonsstykker. Det er en krypteringsnøkkel i et hex-kodet format sammen med en 32-bits nøkkelidentifikator.

Vi oppretter en ny mappe “Nøkler” i “/Etc/mysql/” Katalog og bruk OpenSSL -verktøyet for å tilfeldig generere 3 sekskantstrenger og omdirigere utdataene til en ny fil i nøkler mappe. Skriv inn følgende kommandoer:

ubuntu@ubuntu: ~ $ sudo mkdir/etc/mysql/nøkler
ubuntu@ubuntu: ~ $ ekko -n "1;" $ openssl rand hex 32>/etc/mysql/nøkler/enc_keys "
ubuntu@ubuntu: ~ $ ekko -n "2;" $ openssl rand hex 32>/etc/mysql/nøkler/enc_keys "
ubuntu@ubuntu: ~ $ ekko -n "3;" $ openssl rand hex 32>/etc/mysql/nøkler/enc_keys "

Hvor 1,2,3 er nøkkelidentifikatorene; Vi inkluderer dem for å lage en referanse til krypteringsnøklene ved hjelp av variabel innodb_default_encryption_key_id i MariaDB. Utgangsfilen vil se slik ut:

1; 01495BA35E1C9602E14E40BD6DE41BB8
2; 3cffa4a5d288e90108394dbf639664f8
3; 9953297ed1a58ae837486318840f5f1d

Nøkkelfilkryptering

Vi kan enkelt angi systemvariabelen File_Key_Management_Filename med riktig bane inne i filtasten Forvaltnings -plugin. Men det er ikke sikkert å la nøklene være i ren tekst. Vi kan redusere risikoen til en viss grad ved å tildele filtillatelser, men det er ikke tilstrekkelig.

Nå vil vi kryptere tidligere opprettet nøkler ved hjelp av et tilfeldig generert passord. I kontrast kan nøkkelstørrelsen variere fra 128/192/256-bits.

ubuntu@ubuntu: ~ $ openssl rand -hex 192>/etc/mysql/nøkler/enc_paswd.nøkkel

Derfor vil vi bruke OPENSSL ENC kommando i terminalen for å kryptere enc_key.tekst fil til enc_key.Enc, Bruke krypteringsnøkkelen opprettet ovenfor. Dessuten støtter MariaDB bare CBC -modus for AES for å kryptere krypteringsnøklene.

ubuntu@ubuntu: ~ $ openssl Enc -aes -256 -cbc -md sha1 -pass fil:/etc/mysql/nøkler/enc_paswd.nøkkel -in/etc/mysql/nøkler/enc_key.txt -out/etc/mysql/nøkler/enc_key.enc && sudo rm/etc/mysql/nøkler/enc_key.tekst

Vi sletter også vår enc_keys.tekst fil da det ikke lenger er nødvendig. Dessuten kan vi alltid dekryptere dataene våre i MariaDB så lenge passordfilen vår er sikker.

Konfigurere filstyringsplugin

Vi vil nå konfigurere MariaDB med filtasten for filstyring ved å legge til følgende variabler i konfigurasjonsfilen. Konfigurasjonsfilene er vanligvis lokalisert i '/etc/mysql' og les alle .CNF -filer som standard. Eller du kan opprette en ny konfigurasjonsfil “Mariadb_enc.CNF ” under '/etc/mysql/conf.d/ katalog.

Nå kan konfigurasjonsfilen din se helt annerledes ut enn dette. Legg imidlertid til disse krypteringsvariablene under [SQLD]. Hvis nøkkelen er kryptert, krever plugin to systemvariabler for å konfigurere, i.e., file_key_management_filename og file_key_management_filkey.

[SQLD]
#File Key Management Plugin
plugin_load_add = file_key_management
file_key_management = på file_key_management_encryption_algorithm = aes_cbc file_key_management_filename =/etc/mysql/nøkler/enc_keys.Enc
file_key_management_filkey =/etc/mysql/nøkler/enc_paswd.nøkkel
# Innodb/xtradb krypteringsoppsett
innodb_default_encryption_key_id = 1
innodb_encrypt_tables = på
innodb_encrypt_log = på
innodb_encryption_threads = 4
# ARIA -krypteringsoppsett
aria_encrypt_tables = på
# Temp & Log -kryptering
Krypter-TMP-disk-tabeller = 1
Krypter-TMP-filer = 1
Encrypt_BinLog = ON

Du kan finne detaljer for hver systemvariabel fra den offisielle MariaDB -nettstedet.

Sikre passordfilen

Vi vil endre MySQL -katalogtillatelsene våre for å sikre passordet og andre sensitive filer. Eierskapet til MariaDB vil bli endret til den nåværende brukeren, som på Ubuntu er mysql.

sudo chown -r mysql: root/etc/mysql/nøkler
sudo chmod 500/etc/mysql/nøkler/

Nå vil vi endre passordet og krypterte filtillatelser til

sudo chown mysql: root/etc/mysql/nøkler/enc_paswd.Nøkkel/etc/mysql/nøkler/enc_key.Enc
sudo chmod 600/etc/mysql/nøkler/enc_paswd.Nøkkel/etc/mysql/nøkler/enc_key.Enc

Start nå databasetjenesten på nytt.

sudo service mysql omstart

Konklusjon

Denne artikkelen har lært hvordan kryptering på databasenivå er timens behov og hvordan vi kan konfigurere kryptering-som-rest i MariaDB. Den eneste ulempen med filstyringspluginen for filen er at den ikke støtter nøkkelrotasjon. Bortsett fra denne plugin -en, er mange andre Key Management -krypteringsløsninger imidlertid.e., AWS Key Management Plugin og Eperi Key Management Plugin. Du kan finne flere detaljer om disse plugins fra MariaDBs offisielle nettsted.