I denne artikkelen vil vi lære å konfigurere kryptering på databasenivå for MariaDB.
Starter
Data i hvilekryptering krever et krypteringsprogram sammen med nøkkeladministrasjonen. Krypteringsprogrammet er ansvarlig for å administrere krypteringsnøkkelen samt kryptere / dekryptere dataene.
MariaDB tilbyr tre krypteringsnøkkeladministrasjonsløsninger, så hvordan 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. Dette pluginet gir imidlertid ikke en nøkkelrotasjonsfunksjon.
Hvis du bruker en LAMP-server, ligger filene for å legge til dette pluginet i “/ Opt / lampe” katalog. Hvis ikke, gjøres endringene i “/ Etc / mysql / conf.d ” mappe.
Opprette krypteringsnøkler
Før vi krypterer databasen ved hjelp av plugin for filhåndtering, må vi lage filene som inneholder krypteringsnøkler. Vi oppretter en fil med to opplysninger. Det er en krypteringsnøkkel i et sekskodet format sammen med en 32-bit nøkkelidentifikator.
Vi oppretter en ny mappe “Nøkler” i “/ Etc / mysql /” katalog og bruk OpenSSL-verktøyet for å tilfeldig generere 3 Hex-strenger og omdirigere utdataene til en ny fil i nøklene mappe. Skriv inn følgende kommandoer:
[e-postbeskyttet]: ~ $ sudo mkdir / etc / mysql / keys[e-postbeskyttet]: ~ $ echo -n "1;" $ openssl rand hex 32> / etc / mysql / keys / enc_keys "
[e-postbeskyttet]: ~ $ echo -n "2;" $ openssl rand hex 32> / etc / mysql / keys / enc_keys "
[e-postbeskyttet]: ~ $ echo -n "3;" $ openssl rand hex 32> / etc / mysql / keys / enc_keys "
Hvor 1,2,3 er nøkkelidentifikatorene; vi inkluderer dem for å lage en referanse til krypteringsnøklene ved hjelp av variabelen innodb_default_encryption_key_id i MariaDB. Utdatafilen vil se slik ut:
1; 01495ba35e1c9602e14e40bd6de41bb82; 3cffa4a5d288e90108394dbf639664f8
3; 9953297ed1a58ae837486318840f5f1d
Nøkkelfilkryptering
Vi kan enkelt angi systemvariabelen file_key_management_filename med riktig sti inne i File Key Management-plugin. Men det er ikke trygt å la tastene ligge i ren tekst. Vi kan redusere risikoen til en viss grad ved å tildele filtillatelser, men det er ikke tilstrekkelig.
Nå vil vi kryptere tidligere opprettede nøkler ved hjelp av et tilfeldig generert passord. I kontrast kan nøkkelstørrelsen variere fra 128/192/256-bits.
[e-postbeskyttet]: ~ $ openssl rand -hex 192> / etc / mysql / keys / enc_paswd.nøkkelDerfor vil vi bruke openssl enc kommandoen i terminalen for å kryptere enc_key.tekst fil til enc_key.enc, ved hjelp av krypteringsnøkkelen opprettet ovenfor. Dessuten støtter MariaDB bare CBC-modusen til AES for å kryptere krypteringsnøklene.
[e-postbeskyttet]: ~ $ openssl enc -aes-256-cbc -md sha1 -pass fil: / etc / mysql / keys / enc_paswd.nøkkel -in / etc / mysql / keys / enc_key.txt -out / etc / mysql / keys / enc_key.enc && sudo rm / etc / mysql / keys / enc_key.tekstVi sletter også vår enc_keys.tekst filen da den ikke lenger er påkrevd. Dessuten kan vi alltid dekryptere dataene våre i MariaDB så lenge passordfilen vår er sikker.
Konfigurerer programtillegg for styring av filnøkkel
Vi vil nå konfigurere MariaDB med File Key Management-plugin ved å legge til følgende variabler i konfigurasjonsfilen. Konfigurasjonsfilene ligger vanligvis 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-programmet to systemvariabler for å konfigurere, dvs.e., file_key_management_filename and file_key_management_filekey.
[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 / keys / enc_keys.enc
file_key_management_filekey = / etc / mysql / keys / 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
# Oppsett av Aria-kryptering
aria_encrypt_tables = PÅ
# Temp & Log Encryption
kryptere-tmp-disk-tabeller = 1
kryptere-tmp-filer = 1
encrypt_binlog = PÅ
Du kan finne detaljer for hver systemvariabel fra det offisielle MariaDB-nettstedet.
Sikre passordfilen
Vi vil endre MySQL-katalogtillatelsene 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 / keyssudo chmod 500 / etc / mysql / keys /
Nå vil vi endre passord og krypterte filtillatelser til
sudo chown mysql: root / etc / mysql / keys / enc_paswd.nøkkel / etc / mysql / keys / enc_key.encsudo chmod 600 / etc / mysql / keys / enc_paswd.nøkkel / etc / mysql / keys / enc_key.enc
Start nå databasetjenesten på nytt.
sudo service mysql start på nyttKonklusjon
Denne artikkelen har lært hvordan kryptering på databasenivå er timens behov og hvordan vi kan konfigurere kryptering i hvile i MariaDB. Den eneste ulempen med plugin for File Key Management er at den ikke støtter nøkkelrotasjon. Imidlertid, bortsett fra dette pluginet, er det mange andre krypteringsløsninger for nøkkeladministrasjon, jeg.e., AWS Key Management Plugin og Eperi Key Management Plugin. Du finner mer informasjon om disse pluginene fra MariaDBs offisielle nettside.