{"id":97667,"date":"2020-10-20T08:42:25","date_gmt":"2020-10-20T06:42:25","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/shifrovanie-v-mysql-ispolzovanie-master-key"},"modified":"2020-10-20T08:42:25","modified_gmt":"2020-10-20T06:42:25","slug":"shifrovanie-v-mysql-ispolzovanie-master-key","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/shifrovanie-v-mysql-ispolzovanie-master-key","title":{"rendered":"Szyfrowanie w MySQL: wykorzystanie Klucza G\u0142\u00f3wnego","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<h2><\/h2>\n<p><strong><em>W przededniu nowego naboru na kurs&nbsp;<\/em><\/strong><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/wMyj\/\"><strong><em>\u201eBazy danych\u201d<\/em><\/strong><\/a><\/noindex><strong><em>&nbsp;kontynuujemy publikacj\u0119 serii artyku\u0142\u00f3w na temat szyfrowania w MySQL.<\/em><\/strong><\/p>\n<p><img decoding=\"async\" alt=\"Szyfrowanie w MySQL: wykorzystanie Klucza G\u0142\u00f3wnego\" src=\"\/wp-content\/uploads\/2020\/10\/762866d2c321acd726e30606c9108122.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>W poprzednim artykule tej serii (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/522092\/\"><u>Szyfrowanie w MySQL: skarbnica kluczy<\/u><\/a><\/noindex>) om\u00f3wili\u015bmy magazyny kluczy. W tym artykule przyjrzymy si\u0119, jak wykorzystywany jest klucz g\u0142\u00f3wny (master key), a tak\u017ce om\u00f3wimy zalety i wady szyfrowania metod\u0105 kopertow\u0105 (envelope encryption).&nbsp;<\/p>\n<p>Idea szyfrowania kopertowego polega na tym, \u017ce klucze u\u017cywane do szyfrowania (klucze przestrzeni tabel) s\u0105 szyfrowane innym kluczem (kluczem g\u0142\u00f3wnym, master key). Klucze przestrzeni tabel s\u0105 faktycznie u\u017cywane do szyfrowania danych. Mo\u017cna to graficznie przedstawi\u0107 w ten spos\u00f3b:<\/p>\n<p><img decoding=\"async\" alt=\"Szyfrowanie w MySQL: wykorzystanie Klucza G\u0142\u00f3wnego\" src=\"\/wp-content\/uploads\/2020\/10\/385afda0eff739f4720f59799c35b51f.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>G\u0142\u00f3wny klucz (master key) znajduje si\u0119 w magazynie kluczy (keyring), a klucze przestrzeni tabel &#8212; w nag\u0142\u00f3wkach zaszyfrowanych przestrzeni tabel (na stronie 0 przestrzeni tabel).&nbsp;<\/p>\n<p>Na powy\u017cszym rysunku:<\/p>\n<ul>\n<li>\n<p>Tabela A jest szyfrowana kluczem 1 (Key 1). Klucz 1 jest szyfrowany za pomoc\u0105 klucza g\u0142\u00f3wnego (master key) i przechowywany w postaci zaszyfrowanej w nag\u0142\u00f3wku tabeli A.<\/p>\n<\/li>\n<li>\n<p>Tabela B jest szyfrowana kluczem 2 (Key 2). Klucz 2 jest szyfrowany za pomoc\u0105 klucza g\u0142\u00f3wnego (master key) i przechowywany w postaci zaszyfrowanej w nag\u0142\u00f3wku tabeli B.<\/p>\n<\/li>\n<li>\n<p>I tak dalej.<\/p>\n<\/li>\n<\/ul>\n<p>Gdy serwer musi odszyfrowa\u0107 tabel\u0119 A, pobiera klucz g\u0142\u00f3wny z magazynu, odczytuje zaszyfrowany klucz 1 z nag\u0142\u00f3wka tabeli A i odszyfrowuje klucz 1. Odszyfrowany klucz 1 jest przechowywany w pami\u0119ci serwera i u\u017cywany do odszyfrowania tabeli A.<\/p>\n<h3>InnoDB<\/h3>\n<p>W InnoDB faktyczne szyfrowanie i deszyfrowanie odbywa si\u0119 na poziomie wej\u015bcia-wyj\u015bcia. Oznacza to, \u017ce strona jest szyfrowana bezpo\u015brednio przed zapisaniem na dysku i odszyfrowywana natychmiast po odczycie z dysku.<\/p>\n<p>W InnoDB szyfrowanie dzia\u0142a tylko na poziomie przestrzeni tabel. Domy\u015blnie wszystkie tabele s\u0105 tworzone w oddzielnych przestrzeniach tabel (<noindex><a rel=\"nofollow\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/innodb-file-per-table-tablespaces.html\"><u>file-per-table tablespace<\/u><\/a><\/noindex>). M\u00f3wi\u0105c inaczej, tworzona jest przestrze\u0144 tabel, kt\u00f3ra mo\u017ce zawiera\u0107 tylko jedn\u0105 tabel\u0119. Chocia\u017c mo\u017cesz r\u00f3wnie\u017c tworzy\u0107 tabele w g\u0142\u00f3wnej przestrzeni tabel (<noindex><a rel=\"nofollow\" href=\"https:\/\/dev.mysql.com\/doc\/refman\/8.0\/en\/general-tablespaces.html\"><u>general tablespace<\/u><\/a><\/noindex>). W ka\u017cdym razie tabela zawsze znajduje si\u0119 w jakiej\u015b przestrzeni tabel. I poniewa\u017c szyfrowanie odbywa si\u0119 na poziomie przestrzeni tabel, jest ono ca\u0142kowicie szyfrowane lub nie. Oznacza to, \u017ce nie mo\u017cna zaszyfrowa\u0107 tylko cz\u0119\u015bci tabel w g\u0142\u00f3wnej przestrzeni tabel.&nbsp;<\/p>\n<p>Je\u015bli z jakiego\u015b powodu masz wy\u0142\u0105czon\u0105 opcj\u0119 file-per-table, wszystkie tabele s\u0105 tworzone wewn\u0105trz systemowej przestrzeni tabel (system tablespace). W <noindex><a rel=\"nofollow\" href=\"https:\/\/www.percona.com\/software\/mysql-database\/percona-server\"><u>Percona Server for MySQL<\/u><\/a><\/noindex> mo\u017cna zaszyfrowa\u0107 systemow\u0105 przestrze\u0144 tabel z wykorzystaniem zmiennej innodb<em>sys<\/em>tablespace<em>encrypt lub korzystaj\u0105c z w\u0105tk\u00f3w szyfrowania (encryption threads), ale to wci\u0105\u017c jest funkcjonalno\u015b\u0107 eksperymentalna. W MySQL tego nie ma.<\/em><\/p>\n<p><em>Zanim przejdziemy dalej, musimy om\u00f3wi\u0107 struktur\u0119 identyfikatora g\u0142\u00f3wnego klucza (master key ID). Sk\u0142ada si\u0119 on z UUID, KEY<\/em>ID oraz prefiks &#171;INNODBKey&#187;. Wygl\u0105da to tak: INNODBKey-UUID-KEY<em>ID.<\/em><\/p>\n<p><em>UUID &#8212; to uuid serwera z zaszyfrowan\u0105 przestrzeni\u0105 tabel. KEY<\/em>ID &#8212; to po prostu stale rosn\u0105ca warto\u015b\u0107. Przy pocz\u0105tkowym tworzeniu g\u0142\u00f3wnego klucza KEY<em>ID wynosi 1. Przy rotacji klucza, gdy tworzony jest nowy g\u0142\u00f3wny klucz, KEY<\/em>ID = 2 itd. Szczeg\u00f3\u0142owo na temat rotacji g\u0142\u00f3wnych kluczy porozmawiamy w kolejnych artyku\u0142ach tej serii.<\/p>\n<p>Teraz, gdy wiemy, jak wygl\u0105da identyfikator g\u0142\u00f3wnego klucza, przyjrzyjmy si\u0119 nag\u0142\u00f3wkowi zaszyfrowanej przestrzeni tabel. Kiedy przestrze\u0144 tabel jest szyfrowana, informacja o szyfrowaniu jest dodawana do nag\u0142\u00f3wka. Wygl\u0105da to nast\u0119puj\u0105co:<\/p>\n<p><img decoding=\"async\" alt=\"Szyfrowanie w MySQL: wykorzystanie Klucza G\u0142\u00f3wnego\" src=\"\/wp-content\/uploads\/2020\/10\/0703933a85f0a106c07c0dbd6b7f4186.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>KEY ID &#8212; to KEY<em>ID z identyfikatora g\u0142\u00f3wnego klucza, kt\u00f3ry ju\u017c om\u00f3wili\u015bmy. UUID &#8212; to uuid serwera, kt\u00f3re r\u00f3wnie\u017c jest u\u017cywane w identyfikatorze g\u0142\u00f3wnego klucza. TABLESPACE KEY &#8212; klucz przestrzeni tabel, kt\u00f3ry sk\u0142ada si\u0119 z 256 bit\u00f3w, losowo wygenerowanych przez serwer. Wektor inicjalizacji (IV, initialization vector) r\u00f3wnie\u017c sk\u0142ada si\u0119 z 256 losowo wygenerowanych bit\u00f3w (cho\u0107 powinien mie\u0107 128 bit\u00f3w). IV jest u\u017cywane do inicjalizacji szyfrowania i deszyfrowania AES (z 256 bit\u00f3w u\u017cywane jest tylko 128). Na ko\u0144cu znajduje si\u0119 suma kontrolna CRC32 dla TABLESPACE KEY oraz IV.<\/em><\/p>\n<p><em>Przez ca\u0142y ten czas nieco upraszcza\u0142em, m\u00f3wi\u0105c, \u017ce w nag\u0142\u00f3wku znajduje si\u0119 zaszyfrowany klucz przestrzeni tabel. W rzeczywisto\u015bci klucz przestrzeni tabel i wektor inicjalizacji s\u0105 przechowywane i szyfrowane razem za pomoc\u0105 g\u0142\u00f3wnego klucza. Pami\u0119taj, \u017ce przed zaszyfrowaniem klucza przestrzeni tabel i wektora inicjalizacji obliczana jest CRC32.<\/em><\/p>\n<h3>Po co potrzebna jest CRC32?<\/h3>\n<p><em>Kr\u00f3tko m\u00f3wi\u0105c, aby upewni\u0107 si\u0119 o wa\u017cno\u015bci g\u0142\u00f3wnego klucza. Po odszyfrowaniu klucza przestrzeni tabel i wektora inicjalizacji, obliczana jest suma kontrolna i por\u00f3wnywana z CRC32, przechowywan\u0105 w nag\u0142\u00f3wku. Je\u015bli sumy kontrolne si\u0119 zgadzaj\u0105, mamy prawid\u0142owy g\u0142\u00f3wny klucz i klucz przestrzeni tabel. W przeciwnym razie przestrze\u0144 tabel jest oznaczana jako nieobecna (i tak nie b\u0119dziemy mogli jej odszyfrowa\u0107).<\/em><\/p>\n<p><em>Mo\u017cesz zapyta\u0107: w kt\u00f3rym momencie odbywa si\u0119 weryfikacja kluczy? Odpowied\u017a &#8212; podczas uruchamiania serwera. Serwer z zaszyfrowanymi tabelami &#8203; \/ przestrzeniami tabel przy starcie odczytuje UUID, KEY<\/em>ID z nag\u0142\u00f3wka i generuje identyfikator g\u0142\u00f3wnego klucza. Nast\u0119pnie pobiera potrzebny g\u0142\u00f3wny klucz z magazynu (keyring), deszyfruje klucz przestrzeni tabel i sprawdza sum\u0119 kontroln\u0105. Jeszcze raz, je\u015bli suma kontrolna si\u0119 zgadza, to wszystko w porz\u0105dku, je\u015bli nie &#8212; przestrze\u0144 tabel jest oznaczana jako nieobecna.<\/p>\n<p>Je\u015bli czyta\u0142e\u015b poprzedni artyku\u0142 z tej serii (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/522092\/\"><u>Szyfrowanie w MySQL: skarbnica kluczy<\/u><\/a><\/noindex>), by\u0107 mo\u017ce pami\u0119tasz, \u017ce podczas korzystania z serwerowego magazynu kluczy, serwer przy uruchomieniu otrzymuje tylko list\u0119 identyfikator\u00f3w kluczy, a dok\u0142adniej, key id i user id, poniewa\u017c ta para jednoznacznie identyfikuje klucz. A teraz m\u00f3wi\u0119, \u017ce serwer przy uruchomieniu otrzymuje wszystkie klucze, kt\u00f3re s\u0105 mu potrzebne do sprawdzenia mo\u017cliwo\u015bci odszyfrowania kluczy przestrzeni tabel. Dlaczego wi\u0119c podczas inicjalizacji, w przypadku serwerowego magazynu, \u0142adowane s\u0105 tylko key<em>id i user<\/em>id, a nie wszystkie klucze? Poniewa\u017c nie wszystkie klucze mog\u0105 by\u0107 potrzebne. G\u0142\u00f3wnie wi\u0105\u017ce si\u0119 to z rotacj\u0105 g\u0142\u00f3wnego klucza. Przy rotacji g\u0142\u00f3wnego klucza w magazynie tworzony jest nowy g\u0142\u00f3wny klucz, ale stare klucze nie s\u0105 usuwane. W ten spos\u00f3b w serwerowym magazynie kluczy mo\u017ce znajdowa\u0107 si\u0119 wiele kluczy, kt\u00f3re nie s\u0105 potrzebne serwerowi i, w zwi\u0105zku z tym, nie s\u0105 pobierane podczas uruchamiania serwera.<\/p>\n<p>Nadszed\u0142 czas, aby porozmawia\u0107 o zaletach i wadach szyfrowania z u\u017cyciem klucza g\u0142\u00f3wnego. Najwi\u0119ksz\u0105 zalet\u0105 jest to, \u017ce potrzebujesz tylko jednego klucza szyfrowania (klucza g\u0142\u00f3wnego), kt\u00f3ry zostanie przechowany oddzielnie od Twoich zaszyfrowanych danych. U\u0142atwia to szybkie uruchamianie serwera i zmniejsza potrzebne miejsce do przechowywania, co z kolei u\u0142atwia zarz\u0105dzanie. Ponadto jedyny klucz g\u0142\u00f3wny mo\u017cna \u0142atwo regenerowa\u0107.<\/p>\n<p>Jednak szyfrowanie za pomoc\u0105 klucza g\u0142\u00f3wnego ma jedn\u0105 istotn\u0105 wad\u0119: po zaszyfrowaniu przestrzeni tabeli za pomoc\u0105 klucza tablespace_key, zawsze pozostaje ona zaszyfrowana tym samym kluczem. Rotacja klucza g\u0142\u00f3wnego nie pomaga w tej sytuacji. Dlaczego to jest wada? Wiemy, \u017ce w MySQL wyst\u0119puj\u0105 b\u0142\u0119dy, kt\u00f3re mog\u0105 prowadzi\u0107 do nag\u0142ej awarii i stworzenia pliku core. Poniewa\u017c plik core zawiera zrzut pami\u0119ci serwera, mo\u017ce si\u0119 zdarzy\u0107, \u017ce w zrzucie znajdzie si\u0119 odszyfrowany klucz przestrzeni tabeli. Co gorsza, odszyfrowane klucze przestrzeni tabeli s\u0105 przechowywane w pami\u0119ci, kt\u00f3ra mo\u017ce zosta\u0107 swapowana na dysk. Mo\u017cesz powiedzie\u0107, \u017ce to nie jest wada, poniewa\u017c potrzebne s\u0105 uprawnienia root, aby uzyska\u0107 dost\u0119p do tych plik\u00f3w i partycji swap. Tak, ale uprawnienia root s\u0105 potrzebne tylko przez chwil\u0119. Gdy kto\u015b uzyska dost\u0119p do odszyfrowanego klucza przestrzeni tabeli, ta osoba mo\u017ce go dalej u\u017cywa\u0107 do odszyfrowania danych nawet bez uprawnie\u0144 root. Ponadto dysk mo\u017ce zosta\u0107 skradziony, a partycj\u0119 swap lub pliki core mo\u017cna odczyta\u0107 za pomoc\u0105 program\u00f3w firm trzecich. Celem TDE jest to, aby sta\u0142o si\u0119 to nieczytelne, nawet je\u015bli dysk zostanie skradziony. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.percona.com\/software\/mysql-database\/percona-server\"><u>Percona Server for MySQL<\/u><\/a><\/noindex> istnieje mo\u017cliwo\u015b\u0107 ponownego szyfrowania przestrzeni tabeli nowo wygenerowanymi kluczami. Funkcjonalno\u015b\u0107 ta nazywa si\u0119 w\u0105tkami szyfrowania (encryption threads) i w momencie pisania tego artyku\u0142u nadal jest eksperymentalna.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/wMyj\/\"><strong>Teoria i praktyka u\u017cycia ClickHouse w rzeczywistych aplikacjach. Aleksandr Zajcew (2018r)<\/strong><\/a><\/noindex><\/p>\n<h3>Czytaj dalej:<\/h3>\n<ul>\n<li>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/522092\/\">Szyfrowanie w MySQL: skarbnica kluczy<\/a><\/noindex><\/p>\n<\/li>\n<\/ul>\n<p>\u0179r\u00f3d\u0142o: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/524050\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043d\u0430 \u043a\u0443\u0440\u0441&nbsp;\u00ab\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb&nbsp;\u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c \u043f\u0443\u0431\u043b\u0438\u043a\u043e\u0432\u0430\u0442\u044c \u0441\u0435\u0440\u0438\u044e \u0441\u0442\u0430\u0442\u0435\u0439 \u043f\u0440\u043e \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 MySQL. \u0412 \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0435\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u044d\u0442\u043e\u0439 \u0441\u0435\u0440\u0438\u0438 (\u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 MySQL: \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043a\u043b\u044e\u0447\u0435\u0439) \u043c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438 \u043e \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0430\u0445 \u043a\u043b\u044e\u0447\u0435\u0439. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0438\u043c, \u043a\u0430\u043a \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u0435\u0442\u0441\u044f \u0433\u043b\u0430\u0432\u043d\u044b\u0439 \u043a\u043b\u044e\u0447 (master key), \u0430 \u0442\u0430\u043a\u0436\u0435 \u043e\u0431\u0441\u0443\u0434\u0438\u043c \u0434\u043e\u0441\u0442\u043e\u0438\u043d\u0441\u0442\u0432\u0430 \u0438 \u043d\u0435\u0434\u043e\u0441\u0442\u0430\u0442\u043a\u0438 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043c\u0435\u0442\u043e\u0434\u043e\u043c \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u043e\u0432 (envelope encryption).&nbsp; \u0418\u0434\u0435\u044f \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u044f \u043a\u043e\u043d\u0432\u0435\u0440\u0442\u043e\u0432 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":97668,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-97667","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.1.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043d\u0430 \u043a\u0443\u0440\u0441 \u00ab\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/shifrovanie-v-mysql-ispolzovanie-master-key\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 MySQL: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Master Key | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043d\u0430 \u043a\u0443\u0440\u0441 \u00ab\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/shifrovanie-v-mysql-ispolzovanie-master-key\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-10-20T06:42:25+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-20T06:42:25+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Szyfrowanie w MySQL: u\u017cycie klucza g\u0142\u00f3wnego | ProHoster","description":"W przededniu rozpocz\u0119cia nowej edycji kursu \u201eBazy danych\u201d kontynuujemy.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/shifrovanie-v-mysql-ispolzovanie-master-key","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0428\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0432 MySQL: \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u0438\u0435 Master Key | ProHoster","og:description":"\u0412 \u043f\u0440\u0435\u0434\u0434\u0432\u0435\u0440\u0438\u0438 \u0441\u0442\u0430\u0440\u0442\u0430 \u043d\u043e\u0432\u043e\u0433\u043e \u043d\u0430\u0431\u043e\u0440\u0430 \u043d\u0430 \u043a\u0443\u0440\u0441 \u00ab\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb \u043f\u0440\u043e\u0434\u043e\u043b\u0436\u0430\u0435\u043c.","og:url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/shifrovanie-v-mysql-ispolzovanie-master-key","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-10-20T06:42:25+00:00","article:modified_time":"2020-10-20T06:42:25+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"97667","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 10:15:28","updated":"2022-10-03 07:13:51","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/97667","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=97667"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/97667\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media\/97668"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=97667"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=97667"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=97667"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}