Å ifrÄ“Å”ana MySQL: galvenās atslēgas rotācija

Gaidot jaunas uzņemÅ”anas sākumu kursā "Datu bāze" mēs turpinām publicēt rakstu sēriju par Å”ifrÄ“Å”anu MySQL.

IepriekŔējā Ŕīs sērijas rakstā mēs apspriedām kā darbojas galvenās atslēgas Å”ifrÄ“Å”ana. Å odien, pamatojoties uz iepriekÅ” iegÅ«tajām zināŔanām, aplÅ«kosim galveno taustiņu rotāciju.

Galvenās atslēgas rotācija ietver jaunas galvenās atslēgas Ä£enerÄ“Å”anu un tabulas vietas atslēgu (kas tiek saglabātas tabulas laukuma galvenēs) atkārtoti Å”ifrÄ“Å”anu ar Å”o jauno atslēgu.

Atcerēsimies, kā izskatās Å”ifrētas tabulas vietas galvene:

Å ifrÄ“Å”ana MySQL: galvenās atslēgas rotācija

No iepriekŔējā raksta mēs zinām, ka serveris palaiÅ”anas laikā nolasa visu Å”ifrēto tabulu vietu galvenes un atceras lielāko KEY ID. Piemēram, ja mums ir trÄ«s tabulas ar KEYID = 3 un viena tabula ar KEYID = 4, tad maksimālais atslēgas ID bÅ«s 4. Sauksim Å”o KEY ID - MAX KEY ID.

Kā darbojas galvenās atslēgas rotācija

1. Lietotājs izpilda ALTER INNODB MASTER KEY.

2. Serveris pieprasa atslēgu piekariņam Ä£enerēt jaunu galveno atslēgu ar servera UUID un KEYID vienāds ar vienu plus MAXKEYID. Tātad mēs iegÅ«stam galvenās atslēgas ID, kas ir vienāds ar INNODBKEY-UUID-(MAXKEYID + 1). Pēc veiksmÄ«gas galvenās atslēgas Ä£enerÄ“Å”anas MAX KEY ID tiek palielināts par vienu (t.i., MAXKEYID=MAXKEYID + 1).

3. Serveris skenē visas tabulu vietas, kas Å”ifrētas ar galveno atslēgu, un katrai tabulas vietai:

  • Å”ifrē tabulas vietas atslēgu ar jauno galveno atslēgu;

  • atjaunina atslēgas ID uz jauno MAXKEYID;

  • ja UUID atŔķiras no servera UUID, atjauniniet servera UUID.

Kā zināms, galvenās atslēgas ID, ko izmanto tabulas atÅ”ifrÄ“Å”anai, sastāv no UUID un KEY ID, kas nolasÄ«ts no tabulas vietas galvenes. Å obrÄ«d mēs atjauninām Å”o informāciju tabulas telpas Å”ifrÄ“Å”anas galvenē, lai serveris saņemtu pareizo galveno atslēgu.

Ja mums ir tabulas vietas no dažādām vietām, piemēram, dažādas dublējumkopijas, tās var izmantot dažādas galvenās atslēgas. Visas Ŕīs galvenās atslēgas bÅ«s jāizgÅ«st no repozitorija, startējot serveri. Tas var palēnināt servera startÄ“Å”anu, it Ä«paÅ”i, ja tiek izmantots servera puses atslēgu krātuve. Izmantojot galvenās atslēgas rotāciju, mēs atkārtoti Å”ifrējam tabulas vietas atslēgas ar vienu galveno atslēgu, kas ir vienāda visām tabulu vietām. Tagad serverim startÄ“Å”anas laikā jāsaņem tikai viena galvenā atslēga.

Tas, protams, ir tikai patÄ«kams blakusefekts. Galvenās atslēgas rotācijas galvenais mērÄ·is ir padarÄ«t mÅ«su serveri droŔāku. GadÄ«jumā, ja galvenā atslēga ir kaut kādā veidā nozagta no glabātuves (piemēram, no Vault servera), ir iespējams Ä£enerēt jaunu galveno atslēgu un atkārtoti Å”ifrēt tabulas vietas atslēgas, padarot nozagto atslēgu nederÄ«gu. Mēs esam droŔībā... gandrÄ«z.

IepriekŔējā rakstā es runāju par to, kā pēc tabulas vietas atslēgas nozagÅ”anas treŔā puse var to izmantot datu atÅ”ifrÄ“Å”anai. Ar nosacÄ«jumu, ka ir piekļuve mÅ«su diskam. Ja galvenā atslēga ir nozagta un jums ir piekļuve Å”ifrētajiem datiem, varat izmantot nozagto galveno atslēgu, lai atÅ”ifrētu tabulas vietas atslēgu un iegÅ«tu atÅ”ifrētos datus. Kā redzat, galvenās atslēgas pagrieÅ”ana Å”ajā gadÄ«jumā nepalÄ«dz. Mēs atkārtoti Å”ifrējam tabulas vietas atslēgu ar jauno galveno atslēgu, taču faktiskā atslēga, kas tika izmantota datu Å”ifrÄ“Å”anai/atÅ”ifrÄ“Å”anai, paliek nemainÄ«ga. Tāpēc "hakeris" var turpināt to izmantot, lai atÅ”ifrētu datus. IepriekÅ” es to minēju Percona serveris MySQL var veikt patiesu tabulas vietas atkārtotu Å”ifrÄ“Å”anu, nevis tikai vienkārÅ”u tabulas vietas atslēgas atkārtotu Å”ifrÄ“Å”anu. Å o lÄ«dzekli sauc par Å”ifrÄ“Å”anas pavedieniem. Tomēr Ŕī funkcionalitāte Å”obrÄ«d joprojām ir eksperimentāla.

Galvenās atslēgas rotācija ir noderÄ«ga, ja galvenā atslēga tiek nozagta, taču uzbrucējs nevar to izmantot un atÅ”ifrēt tabulas vietas atslēgas.

Reģistrējieties bezmaksas demonstrācijas nodarbībai.

Lasīt vairāk:

Avots: www.habr.com