{"id":97664,"date":"2020-10-20T08:42:20","date_gmt":"2020-10-20T06:42:20","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/shifrovanie-v-mysql-hranilishhe-klyuchej"},"modified":"2020-10-20T08:42:20","modified_gmt":"2020-10-20T06:42:20","slug":"shifrovanie-v-mysql-hranilishhe-klyuchej","status":"publish","type":"post","link":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/shifrovanie-v-mysql-hranilishhe-klyuchej","title":{"rendered":"Kryptering i MySQL: nyckellagring","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><b><i>Inf\u00f6r starten av det nya kursutbudet <noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/luFp\/\">Databaser<\/a><\/noindex> har vi f\u00f6rberett en \u00f6vers\u00e4ttning av en anv\u00e4ndbar artikel.<\/i><\/b><\/p>\n<p><img decoding=\"async\" alt=\"Kryptering i MySQL: nyckellagring\" src=\"\/wp-content\/uploads\/2020\/10\/aeca40f53fe6bdf2a9897aa835ff597d.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p>Transparent datakryptering (Transparent Data Encryption, TDE) introducerades i <noindex><a rel=\"nofollow\" href=\"https:\/\/www.percona.com\/software\/mysql-database\/percona-server\">Percona Server for MySQL<\/a><\/noindex> och MySQL f\u00f6r ganska l\u00e4nge sedan. Men har du n\u00e5gonsin funderat p\u00e5 hur det fungerar under huven och vilken p\u00e5verkan TDE kan ha p\u00e5 din server? I den h\u00e4r artikelserien kommer vi att titta p\u00e5 hur TDE fungerar internt. Vi b\u00f6rjar med nyckellagring, eftersom det beh\u00f6vs f\u00f6r att allt kryptering ska fungera. D\u00e4refter kommer vi att titta mer i detalj p\u00e5 hur kryptering fungerar i Percona Server for MySQL \/ MySQL och vilka extra funktioner som finns i Percona Server for MySQL.<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h3>MySQL Keyring<\/h3>\n<p>\nKeyring \u00e4r plugins som l\u00e5ter servern beg\u00e4ra, skapa och ta bort nycklar i en lokal fil (keyring_file) eller p\u00e5 en fj\u00e4rrserver (till exempel i HashiCorp Vault). Nycklarna cachas alltid lokalt f\u00f6r att p\u00e5skynda \u00e5tkomsten. <\/p>\n<p>Plugins kan delas in i tv\u00e5 kategorier:<\/p>\n<ul>\n<li>Lokal lagring. Till exempel en lokal fil (vi kallar detta ett filbaserat nyckellager, file-based keyring).<\/li>\n<li>Fj\u00e4rrlagring. Till exempel Vault Server (vi kallar detta ett serverbaserat nyckellager, server-based keyring).<\/li>\n<\/ul>\n<p>\nDenna uppdelning \u00e4r viktig eftersom olika typer av lagring beter sig n\u00e5got olika, inte bara vid lagring och h\u00e4mtning av nycklar, utan ocks\u00e5 vid start.<\/p>\n<p>Vid anv\u00e4ndning av filbaserat lager laddas allt inneh\u00e5ll i lagret vid start i cachen: key id, key user, key type och sj\u00e4lva nyckeln.<\/p>\n<p>I fallet med serverbaserat lager (till exempel Vault-servern) laddas endast key id och key user vid start, s\u00e5 att h\u00e4mtning av alla nycklar inte f\u00f6rdr\u00f6jer starten. Nycklarna laddas latinskt. Det inneb\u00e4r att sj\u00e4lva nyckeln endast laddas fr\u00e5n Vault n\u00e4r den faktiskt beh\u00f6vs. Efter att ha laddats cachas nyckeln i minnet f\u00f6r att det i framtiden inte ska beh\u00f6va g\u00f6ras en TLS-koppling till Vault Server f\u00f6r att h\u00e4mta den. L\u00e5t oss nu titta p\u00e5 vilken information som finns i nyckellagret.<\/p>\n<p>Nyckelinformationen inneh\u00e5ller f\u00f6ljande:<\/p>\n<ul>\n<li><b>key id<\/b> \u2014 nyckelidentifierare, till exempel: <br \/>\n <code>INNODBKey-764d382a-7324-11e9-ad8f-9cb6d0d5dc99-1<\/code><\/li>\n<li><b>key type<\/b> \u2014 nyckeltyp, baserad p\u00e5 den anv\u00e4nda krypteringsalgoritmen, m\u00f6jliga v\u00e4rden: \"AES\", \"RSA\" eller \"DSA\".<\/li>\n<li><b>key length<\/b> \u2014 nyckell\u00e4ngd i byte, AES: 16, 24 eller 32, RSA 128, 256, 512 och DSA 128, 256 eller 384.<\/li>\n<li><b>anv\u00e4ndare<\/b> \u2014 nyckelns \u00e4gare. Om nyckeln \u00e4r systemnyckel, till exempel Master Key, \u00e4r detta f\u00e4lt tomt. Om nyckeln skapas med hj\u00e4lp av keyring_udf, anger detta f\u00e4lt nyckelns \u00e4gare.<\/li>\n<li><b>nyckeln<\/b><\/li>\n<\/ul>\n<p>\nNyckeln identifieras entydigt med ett par: key_id, user.<\/p>\n<p>Det finns ocks\u00e5 skillnader i lagring och borttagning av nycklar.<\/p>\n<p>Fil lagringen \u00e4r snabbare. Man kan anta att nyckellagringen \u00e4r en enkel eng\u00e5ngsinmatning av nyckeln i en fil, men s\u00e5 \u00e4r det inte \u2013 h\u00e4r sker fler operationer. Vid varje modifiering av fil lagringen skapas f\u00f6rst en s\u00e4kerhetskopia av allt inneh\u00e5ll. Anta att filen heter my_biggest_secrets, d\u00e5 kommer s\u00e4kerhetskopian att heta my_biggest_secrets.backup. D\u00e4refter \u00e4ndras cachen (nycklar l\u00e4ggs till eller tas bort) och om allt g\u00e5r bra, \u00e5terst\u00e4lls cachen till filen. I s\u00e4llsynta fall, som vid serverfel, kan du se denna s\u00e4kerhetskopia. S\u00e4kerhetskopian tas bort vid n\u00e4sta laddning av nycklarna (vanligtvis efter omstart av servern).<\/p>\n<p>N\u00e4r en nyckel sparas eller tas bort i serverlagring, m\u00e5ste lagringen ansluta till MySQL-servern med kommandona \"skicka nyckel\" \/ \"beg\u00e4ra borttagning av nyckel\" (\"send the key\" \/ \"request key deletion\").<\/p>\n<p>L\u00e5t oss \u00e5terg\u00e5 till serverns starttid. F\u00f6rutom att lagringens hastighet p\u00e5verkar starttiden, finns det ocks\u00e5 fr\u00e5gan om hur m\u00e5nga nycklar som beh\u00f6ver h\u00e4mtas fr\u00e5n lagringen vid start. Detta \u00e4r s\u00e4rskilt viktigt f\u00f6r serverlagringar. Vid uppstart kontrollerar servern vilken nyckel som kr\u00e4vs f\u00f6r de krypterade tabellerna \/ tabellutrymmena och beg\u00e4r nyckeln fr\u00e5n lagringen. P\u00e5 en \"ren\" server med Master Key -kryptering ska det finnas en Master Key som m\u00e5ste h\u00e4mtas fr\u00e5n lagringen. Det kan dock kr\u00e4vas fler nycklar, till exempel n\u00e4r en s\u00e4kerhetskopia \u00e5terst\u00e4lls fr\u00e5n huvudservern till en reservserver. I s\u00e5dana fall b\u00f6r rotation av Master Key \u00f6verv\u00e4gas. Detta kommer att diskuteras mer i kommande artiklar, men h\u00e4r skulle jag vilja n\u00e4mna att en server som anv\u00e4nder flera Master Keys kan starta lite l\u00e4ngre, s\u00e4rskilt vid anv\u00e4ndning av serverlagring av nycklar.<\/p>\n<p>L\u00e5t oss nu prata lite mer om keyring_file. N\u00e4r jag utvecklade keyring_file var jag ocks\u00e5 bekymrad \u00f6ver hur man kontrollerar \u00e4ndringar av keyring_file medan servern \u00e4r i drift. I version 5.7 utf\u00f6rdes kontrollen baserat p\u00e5 filens statistik, vilket inte var en idealisk l\u00f6sning, och i version 8.0 ersattes det med en SHA256-kontrollsumma.<\/p>\n<p>Vid f\u00f6rsta k\u00f6rning ber\u00e4knas statistik f\u00f6r keyring_file och en kontrollsumma, som sparas av servern, och \u00e4ndringar till\u00e4mpas endast om de st\u00e4mmer \u00f6verens. Vid \u00e4ndring av filen uppdateras kontrollsumman.<\/p>\n<p>Vi har redan diskuterat m\u00e5nga fr\u00e5gor om nyckellager. Men det finns ett annat viktigt \u00e4mne som ofta gl\u00f6ms bort eller missf\u00f6rst\u00e5s \u2013 separation av nycklar mellan servrar. <\/p>\n<p>Vad menar jag med detta? Varje server (till exempel Percona Server) i en kluster m\u00e5ste ha en separat plats p\u00e5 Vault-servern d\u00e4r Percona Server ska lagra sina nycklar. I varje Master Key som sparas i lagret finns en GUID f\u00f6r Percona Server inuti dess identifierare. Varf\u00f6r \u00e4r detta viktigt? F\u00f6rest\u00e4ll dig att du har en enda Vault-server och alla Percona-servrar i klustret anv\u00e4nder denna enda Vault-server. Problemet verkar uppenbart. Om alla Percona-servrar anv\u00e4nde Master Key utan unika identifierare, till exempel id = 1, id = 2 osv., skulle alla servrar i klustret anv\u00e4nda samma Master Key. Vad som s\u00e4kerst\u00e4lls av GUID \u2014 avgr\u00e4nsning mellan servrar. Varf\u00f6r prata d\u00e5 om separation av nycklar mellan servrar n\u00e4r det redan finns en unik GUID? Det finns en annan plugin \u2014 keyring_udf. Med denna plugin kan anv\u00e4ndaren av din server lagra sina nycklar p\u00e5 Vault-servern. Problemet uppst\u00e5r n\u00e4r anv\u00e4ndaren skapar en nyckel, till exempel p\u00e5 server server1, och sedan f\u00f6rs\u00f6ker skapa en nyckel med samma identifierare p\u00e5 server2.<\/p>\n<pre><code class=\"sql\">--server1:\nselect keyring_key_store('ROB_1','AES',\"123456789012345\");\n1\n--1 betyder framg\u00e5ngsrikt avslutande\n--server2:\nselect keyring_key_store('ROB_1','AES',\"543210987654321\");\n1<\/code><\/pre>\n<p>\nV\u00e4nta. B\u00e5da servrarna anv\u00e4nder samma Vault-server, borde inte funktionen keyring_key_store avslutas med ett fel p\u00e5 server server2? Intressant nog, om du f\u00f6rs\u00f6ker g\u00f6ra samma sak p\u00e5 en och samma server, f\u00e5r du ett fel:<\/p>\n<pre><code class=\"sql\">--server1:\nselect keyring_key_store('ROB_1','AES',\"123456789012345\");\n1\nselect keyring_key_store('ROB_1','AES',\"543210987654321\");\n0<\/code><\/pre>\n<p>\nR\u00e4tt, ROB_1 finns redan.<\/p>\n<p>L\u00e5t oss f\u00f6rst diskutera det andra exemplet. Som vi tidigare n\u00e4mnt, cache:ar keyring_vault eller vilken annan lagringsplugin (keyring) alla nyckelidentifierare i minnet. S\u00e5, efter att en nyckel skapats, l\u00e4ggs ROB_1 till p\u00e5 server1, och f\u00f6rutom att skicka denna nyckel till Vault, l\u00e4ggs nyckeln ocks\u00e5 till i cachen. Nu, n\u00e4r vi f\u00f6rs\u00f6ker l\u00e4gga till samma nyckel en andra g\u00e5ng, kontrollerar keyring_vault om denna nyckel redan finns i cachen och ger ett felmeddelande. <\/p>\n<p>I det f\u00f6rsta fallet \u00e4r situationen en annan. P\u00e5 servrarna server1 och server2 finns separata cacher. Efter att ha lagt till ROB_1 i cache:en av nycklar p\u00e5 server1 och server Vault, \u00e4r nyckelcachen p\u00e5 server2 inte synkroniserad. I cachen p\u00e5 server2 finns det ingen nyckel ROB_1. S\u00e5ledes skrivs nyckeln ROB_1 in i keyring_key_store och p\u00e5 server Vault, vilket faktiskt skriver \u00f6ver (!) det tidigare v\u00e4rdet. Nu \u00e4r nyckeln ROB_1 p\u00e5 server Vault lika med 543210987654321. Det \u00e4r intressant att server Vault inte blockerar s\u00e5dana \u00e5tg\u00e4rder och enkelt skriver \u00f6ver det gamla v\u00e4rdet.<\/p>\n<p>Nu ser vi varf\u00f6r uppdelningen \u00f6ver servrar p\u00e5 Vault kan vara viktig \u2014 n\u00e4r du anv\u00e4nder keyring_udf och vill lagra nycklar i Vault. Hur s\u00e4kerst\u00e4ller man en s\u00e5dan uppdelning p\u00e5 server Vault? <\/p>\n<p>Det finns tv\u00e5 s\u00e4tt att uppdelning p\u00e5 Vault. Man kan skapa olika monteringspunkter f\u00f6r varje server eller anv\u00e4nda olika s\u00f6kv\u00e4gar inom en och samma monteringspunkt. Det \u00e4r b\u00e4st att visa detta med exempel. S\u00e5, l\u00e5t oss f\u00f6rst titta p\u00e5 separata monteringspunkter: <\/p>\n<pre><code class=\"sql\">--server1:\nvault_url = http:\/\/127.0.0.1:8200\nsecret_mount_point = server1_mount\ntoken = (...)\nvault_ca = (...)\n\n--server2:\nvault_url = http:\/\/127.0.0.1:8200\nsecret_mount_point = sever2_mount\ntoken = (...)\nvault_ca = (...)<\/code><\/pre>\n<p>\nH\u00e4r ser vi att server1 och server2 anv\u00e4nder olika monteringspunkter. Vid uppdelning av s\u00f6kv\u00e4gar skulle konfigurationen se ut p\u00e5 f\u00f6ljande s\u00e4tt:<\/p>\n<pre><code class=\"sql\">--server1:\nvault_url = http:\/\/127.0.0.1:8200\nsecret_mount_point = mount_point\/server1\ntoken = (...)\nvault_ca = (...)\n--server2:\nvault_url = http:\/\/127.0.0.1:8200\nsecret_mount_point = mount_point\/sever2\ntoken = (...)\nvault_ca = (...)<\/code><\/pre>\n<p>\nI det h\u00e4r fallet anv\u00e4nder b\u00e5da servrarna samma monteringspunkt \"mount_point\", men olika s\u00f6kv\u00e4gar. N\u00e4r den f\u00f6rsta hemligheten skapas p\u00e5 servern server1 p\u00e5 denna v\u00e4g skapar Vault-servern automatiskt katalogen \"server1\". F\u00f6r server2 \u00e4r allt likadant. N\u00e4r du tar bort den sista hemligheten i mount_point\/server1 eller mount_point\/server2, tar Vault-servern ocks\u00e5 bort dessa kataloger. Om du anv\u00e4nder separering av s\u00f6kv\u00e4gar m\u00e5ste du skapa endast en monteringspunkt och \u00e4ndra konfigurationsfilerna s\u00e5 att servrarna anv\u00e4nder separata s\u00f6kv\u00e4gar. Monteringspunkten kan skapas med en HTTP-f\u00f6rfr\u00e5gan. Med CURL kan detta g\u00f6ras p\u00e5 f\u00f6ljande s\u00e4tt:<\/p>\n<pre><code class=\"sql\">curl -L -H \"X-Vault-Token: TOKEN\" \u2013cacert VAULT_CA\n--data '{\"type\":\"generic\"}' --request POST VAULT_URL\/v1\/sys\/mounts\/SECRET_MOUNT_POINT<\/code><\/pre>\n<p>\nAlla f\u00e4lt (TOKEN, VAULT_CA, VAULT_URL, SECRET_MOUNT_POINT) motsvarar parametrarna i konfigurationsfilen. Sj\u00e4lvklart kan du anv\u00e4nda Vault-verktyg f\u00f6r att g\u00f6ra samma sak. Men det \u00e4r l\u00e4ttare att automatisera skapandet av monteringspunkten. Jag hoppas att denna information \u00e4r anv\u00e4ndbar f\u00f6r dig, och vi ses i n\u00e4sta artiklar i den h\u00e4r serien.<\/p>\n<p><noindex><a rel=\"nofollow\" href=\"https:\/\/otus.pw\/luFp\/\"><img decoding=\"async\" alt=\"Kryptering i MySQL: nyckellagring\" src=\"\/wp-content\/uploads\/2020\/10\/291dcdd68660bfc312021582baa628ab.jpg\" style=\"display:block;margin: 0 auto;\" \/><\/a><\/noindex><\/p>\n<blockquote>\n<h4>L\u00e4s mer:<\/h4>\n<p><\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/497466\/\">Sysbench och f\u00f6rdelningen av slumpm\u00e4ssiga variabler<\/a><\/noindex><\/li>\n<\/ul>\n<\/blockquote>\n<p>K\u00e4lla: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/otus\/blog\/522092\/\">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 \u00ab\u0411\u0430\u0437\u044b \u0434\u0430\u043d\u043d\u044b\u0445\u00bb \u043f\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438. \u041f\u0440\u043e\u0437\u0440\u0430\u0447\u043d\u043e\u0435 \u0448\u0438\u0444\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0434\u0430\u043d\u043d\u044b\u0445 (Transparent Data Encryption, TDE) \u043f\u043e\u044f\u0432\u0438\u043b\u043e\u0441\u044c \u0432 Percona Server for MySQL \u0438 MySQL \u0434\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u0430\u0432\u043d\u043e. \u041d\u043e \u0437\u0430\u0434\u0443\u043c\u044b\u0432\u0430\u043b\u0438\u0441\u044c \u043b\u0438 \u0432\u044b \u043a\u043e\u0433\u0434\u0430-\u043d\u0438\u0431\u0443\u0434\u044c \u043e \u0442\u043e\u043c, \u043a\u0430\u043a \u043e\u043d\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442 \u043f\u043e\u0434 \u043a\u0430\u043f\u043e\u0442\u043e\u043c \u0438 \u043a\u0430\u043a\u043e\u0435 \u0432\u043b\u0438\u044f\u043d\u0438\u0435 TDE \u043c\u043e\u0436\u0435\u0442 \u043e\u043a\u0430\u0437\u044b\u0432\u0430\u0442\u044c \u043d\u0430 \u0432\u0430\u0448 \u0441\u0435\u0440\u0432\u0435\u0440? \u0412 \u044d\u0442\u043e\u0439 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":97665,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-97664","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.4 - 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\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.\" \/>\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\/sv\/blog\/administrirovanie\/shifrovanie-v-mysql-hranilishhe-klyuchej\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.4\" \/>\n\t\t<meta property=\"og:locale\" content=\"sv_SE\" \/>\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: \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 | 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\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/shifrovanie-v-mysql-hranilishhe-klyuchej\" \/>\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:20+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-10-20T06:42:20+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\udd47Kryptering i MySQL: nyckellager | ProHoster","description":"Inf\u00f6r starten av en ny kurs i \"Databaser\" har vi f\u00f6rberett en \u00f6vers\u00e4ttning av en nyttig artikel f\u00f6r dig.","canonical_url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/shifrovanie-v-mysql-hranilishhe-klyuchej","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"sv_SE","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: \u0445\u0440\u0430\u043d\u0438\u043b\u0438\u0449\u0435 \u043a\u043b\u044e\u0447\u0435\u0439 | 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\u043e\u0434\u0433\u043e\u0442\u043e\u0432\u0438\u043b\u0438 \u0434\u043b\u044f \u0432\u0430\u0441 \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u043f\u043e\u043b\u0435\u0437\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438.","og:url":"https:\/\/prohoster.info\/sv\/blog\/administrirovanie\/shifrovanie-v-mysql-hranilishhe-klyuchej","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:20+00:00","article:modified_time":"2020-10-20T06:42:20+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"97664","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:50","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/97664","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/comments?post=97664"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/posts\/97664\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media\/97665"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/media?parent=97664"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/categories?post=97664"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/sv\/wp-json\/wp\/v2\/tags?post=97664"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}