I denne artikel lærer vi at konfigurere kryptering på databaseniveau til MariaDB.
Kom godt i gang
Data i hvile kryptering kræver et krypterings plugin sammen med nøglehåndtering. Krypterings plugin er ansvarlig for styring af krypteringsnøglen samt kryptering / dekryptering af data.
MariaDB leverer tre løsninger til styring af krypteringsnøgler, så hvordan databaser styrer krypteringsnøglen afhænger af den løsning, du bruger. Denne tutorial demonstrerer kryptering på databaseniveau ved hjælp af MariaDB File Key Management-løsningen. Dette plugin giver dog ikke en nøglerotationsfunktion.
Hvis du bruger en LAMP-server, findes filerne til at tilføje dette plugin i “/ Opt / lampe” vejviser. Hvis ikke, foretages ændringerne i “/ Etc / mysql / conf.d ” folder.
Oprettelse af krypteringsnøgler
Før vi krypterer databasen ved hjælp af File Key Management-plugin, er vi nødt til at oprette de filer, der indeholder krypteringsnøgler. Vi opretter en fil med to stykker information. Det er en krypteringsnøgle i et hex-kodet format sammen med en 32-bit nøgle-id.
Vi opretter en ny mappe “Nøgler” i “/ Etc / mysql /” bibliotek og brug OpenSSL-værktøjet til tilfældigt at generere 3 Hex-strenge og omdirigere output til en ny fil i nøgler folder. Indtast følgende kommandoer:
[e-mail-beskyttet]: ~ $ sudo mkdir / etc / mysql / keys[e-mailbeskyttet]: ~ $ echo -n "1;" $ openssl rand hex 32> / etc / mysql / keys / enc_keys "
[e-mailbeskyttet]: ~ $ echo -n "2;" $ openssl rand hex 32> / etc / mysql / keys / enc_keys "
[e-mailbeskyttet]: ~ $ echo -n "3;" $ openssl rand hex 32> / etc / mysql / keys / enc_keys "
Hvor 1,2,3 er nøgleidentifikatorerne; vi inkluderer dem for at oprette en henvisning til krypteringsnøglerne ved hjælp af variablen innodb_default_encryption_key_id i MariaDB. Outputtfilen vil se sådan ud:
1; 01495ba35e1c9602e14e40bd6de41bb82; 3cffa4a5d288e90108394dbf639664f8
3; 9953297ed1a58ae837486318840f5f1d
Nøglefilkryptering
Vi kan nemt indstille systemvariablen file_key_management_filename med den rette sti inde i File Key Management-plugin'et. Men det er ikke sikkert at lade nøglerne være i almindelig tekst. Vi kan reducere risikoen til en vis grad ved at tildele filtilladelser, men det er ikke tilstrækkeligt.
Nu krypterer vi tidligere oprettede nøgler ved hjælp af en tilfældig genereret adgangskode. I modsætning hertil kan nøglestørrelsen variere fra 128/192/256-bit.
[e-mail-beskyttet]: ~ $ openssl rand -hex 192> / etc / mysql / keys / enc_paswd.nøgleDerfor vil vi bruge openssl enc kommando i terminalen for at kryptere enc_key.txt fil til enc_key.enc, ved hjælp af krypteringsnøglen oprettet ovenfor. Desuden understøtter MariaDB kun CBES-tilstanden for AES for at kryptere dens krypteringsnøgler.
[e-mail-beskyttet]: ~ $ openssl enc -aes-256-cbc -md sha1 -pasfil: / etc / mysql / keys / enc_paswd.nøgle -in / etc / mysql / keys / enc_key.txt -out / etc / mysql / keys / enc_key.enc && sudo rm / etc / mysql / keys / enc_key.txtVi sletter også vores enc_keys.txt fil, da den ikke længere er påkrævet. Desuden kan vi altid dekryptere vores data i MariaDB, så længe vores adgangskodefil er sikker.
Konfiguration af plugin til filhåndtering
Vi konfigurerer nu MariaDB med plugin File File Management ved at tilføje følgende variabler i konfigurationsfilen. Konfigurationsfilerne er normalt placeret i '/ etc / mysql' og læs alle de .cnf-filer som standard. Eller du kan oprette en ny konfigurationsfil “Mariadb_enc.cnf ” under '/ etc / mysql / conf.d / vejviser.
Nu kan din konfigurationsfil se helt anderledes ud end dette. Tilføj dog disse krypteringsvariabler under [sqld]. Hvis nøglen er krypteret, kræver pluginet to systemvariabler at 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 = 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.nøgle
# InnoDB / XtraDB Encryption Setup
innodb_default_encryption_key_id = 1
innodb_encrypt_tables = TIL
innodb_encrypt_log = TIL
innodb_encryption_threads = 4
# Opsætning af Aria-kryptering
aria_encrypt_tables = TIL
# Temp & Log Encryption
krypter-tmp-disk-tabeller = 1
krypter-tmp-filer = 1
encrypt_binlog = TIL
Du kan finde detaljer for hver systemvariabel fra det officielle MariaDB-websted.
Sikring af adgangskodefilen
Vi ændrer vores MySQL-katalogtilladelser for at sikre adgangskoden og andre følsomme filer. Ejerskabet af MariaDB vil blive ændret til den nuværende bruger, som på Ubuntu er mysql.
sudo chown -R mysql: root / etc / mysql / keyssudo chmod 500 / etc / mysql / keys /
Nu ændrer vi adgangskoden og krypterede filtilladelser til
sudo chown mysql: root / etc / mysql / keys / enc_paswd.nøgle / etc / mysql / keys / enc_key.encsudo chmod 600 / etc / mysql / keys / enc_paswd.nøgle / etc / mysql / keys / enc_key.enc
Genstart nu databasetjenesten.
sudo service mysql genstartKonklusion
Denne artikel har lært, hvordan kryptering på databaseniveau er timens behov, og hvordan vi kan konfigurere kryptering i hvile i MariaDB. Den eneste ulempe ved plugin File Management Management er, at det ikke understøtter nøglerotation. Men bortset fra dette plugin, mange andre nøglehåndtering krypteringsløsninger, jeg.e., AWS Key Management Plugin og Eperi Key Management Plugin. Du kan finde flere detaljer om disse plugins fra MariaDBs officielle hjemmeside.