Fa'ailoga i MySQL: Keystore

I le fa'atalitali i le amataga o se fa'ailoga fou mo le kosi "Fa'amaumauga" Ua matou saunia se faaliliuga o se tala aoga mo oe.

Fa'ailoga i MySQL: Keystore

Na aliali mai le Transparent Data Encryption (TDE). Percona Server mo MySQL ma MySQL mo sina taimi umi. Ae pe na e mafaufau ea pe faʻapefea ona galue i lalo o le pulou ma o le a le aʻafiaga o le TDE i luga o lau 'auʻaunaga? I lenei faasologa o tala o le a tatou vaʻavaʻai i le auala e galue ai le TDE i totonu. Tatou amata i le teuina autu, talu ai e manaʻomia lenei mea mo soʻo se faʻailoga e galue. Ona tatou vaʻavaʻai totoʻa lea i le faʻaogaina o faʻamatalaga i Percona Server mo MySQL/MySQL ma pe o a faʻaopoopoga o loʻo i ai i le Percona Server mo MySQL.

MySQL Keyring

Keyring o faʻapipiʻi e mafai ai e le 'auʻaunaga ona fesiligia, fatuina, ma tape ki i totonu o se faila faʻapitonuʻu (keyring_file) poʻo luga ole server mamao (e pei o le HashiCorp Vault). O ki o lo'o teuina i totonu o le atunu'u i taimi uma e fa'avave ai le latou toe maua mai.

E mafai ona vaevaeina plugins i ni vaega se lua:

  • Teuga fa'apitonu'u. Mo se faʻataʻitaʻiga, o se faila faʻapitonuʻu (matou te taʻua o le faila-faʻavae keyring).
  • Teuga mamao. Mo se fa'ata'ita'iga, Vault Server (matou te ta'ua lea o le 'au'aunaga e fa'atatau i le kili).

E taua tele lenei tuueseeseina ona o ituaiga eseese o le teuina e fai sina eseesega, e le gata i le teuina ma le toe aumai o ki, ae faapea foi i le taimi e faagaoioia ai.

Pe a faʻaaogaina se faila faila, i luga o le amataga, o mea uma o loʻo i totonu o le teuina o loʻo faʻapipiʻiina i totonu o le cache: key id, key user, key type, ma le ki lava ia.

I le tulaga o se faleoloa faʻavae (pei o le Vault Server), naʻo le ki id ma le faʻaoga autu e utaina i le amataga, o le mauaina uma o ki e le faʻagesegese ai le amataga. O ki e utaina ma le paie. O lona uiga, o le ki lava ia e utaina mai le Vault pe a manaʻomia moni. O le taimi lava e sii mai ai, o le ki e teu i le mafaufau ina ia le manaʻomia ona maua e ala i fesoʻotaʻiga TLS i le Vault Server i le lumanaʻi. O le isi, se'i o tatou va'ava'ai po'o le a le fa'amatalaga o lo'o iai i le faleoloa autu.

O faʻamatalaga autu e aofia ai mea nei:

  • ki id - fa'ailoga autu, mo se fa'ata'ita'iga:
    INNODBKey-764d382a-7324-11e9-ad8f-9cb6d0d5dc99-1
  • ituaiga ki - ituaiga autu e faʻavae i luga o faʻamatalaga algorithm faʻaaogaina, faʻatatauga talafeagai: "AES", "RSA" poʻo le "DSA".
  • umi autu - umi ki i paita, AES: 16, 24 poʻo le 32, RSA 128, 256, 512 ma le DSA 128, 256 poʻo le 384.
  • tagata faʻaaogā - e ona le ki. Afai o le ki o le faiga, mo se faʻataʻitaʻiga, Master Key, ona gaogao lea o lenei fanua. Afai e faia se ki e faʻaaoga ai le keyring_udf, ona faʻaalia lea e lenei fanua le tagata e ona le ki.
  • le ki lava ia

O le ki e tulaga ese ona iloa e le paga: key_id, user.

E iai foi eseesega i le teuina ma le tapeina o ki.

E televave le teuina o faila. Atonu e te manatu o se faleoloa autu na o le tusiaina o se ki i se faila i le taimi e tasi, ae leai, o loʻo tele mea o loʻo faia iinei. Soo se taimi lava e fai ai se suiga o le teuina o faila, e muamua faia se kopi faaleoleo o mea uma. Fa'apea o le faila e ta'ua my_biggest_secrets, ona avea lea o le kopi faaleoleo ma my_biggest_secrets.backup. Sosoo ai, ua suia le cache (ki e faaopoopo pe tape) ma, afai e manuia mea uma, o le cache e toe setiina i se faila. I tulaga e le masani ai, e pei o le faaletonu o le server, e mafai ona e vaʻai i lenei faila faila. E tape le faila faaleoleo i le isi taimi e utaina ai ki (e masani lava pe a toe amata le server).

Pe a faʻasaoina pe tapeina se ki i totonu o le teuina o mea, o le teuina e tatau ona faʻafesoʻotaʻi i le MySQL server ma faʻatonuga "auina atu le ki" / "talosaga ki le tapeina".

Se'i tatou toe fo'i i le saoasaoa o le amataga o le server. I le faaopoopo atu i le mea moni o le saoasaoa faʻalauiloa e aʻafia e le vault lava ia, o loʻo i ai foi le mataupu pe fia ki mai le vault e manaʻomia ona toe aumai i le amataga. Ioe, e taua tele lenei mea mo le teuina o server. I le amataga, e siaki e le 'auʻaunaga poʻo fea ki e manaʻomia mo laulau faʻailoga / laulau avanoa ma talosagaina le ki mai le teuina. I luga o se 'auʻaunaga "mama" faʻatasi ai ma le Master Key encryption, e tatau ona tasi le Master Key, lea e tatau ona aumai mai le teuina. Ae ui i lea, atonu e manaʻomia se numera tele o ki, mo se faʻataʻitaʻiga, pe a toe faʻafoʻisia e le server backup se backup mai le server muamua. I ia tulaga, e tatau ona tu'uina atu le fesuia'iga o le Master Key. O lenei mea o le a faʻamalamalamaina atili i tala i le lumanaʻi, e ui lava o iinei ou te fia matauina o se server e faʻaaogaina le tele o Master Keys atonu e umi se taimi e amata ai, aemaise lava pe a faʻaaogaina se faleoloa autu o le server.

Sei o tatou talanoa atili e uiga i keyring_file. A'o ou atia'e le keyring_file, sa ou popole fo'i pe fa'afefea ona siaki suiga o keyring_file a'o fa'agasolo le server. I le 5.7, o le siaki na faia e faʻavae i luga o fuainumera faila, e le o se fofo lelei, ma i le 8.0 na suia i se siaki siaki SHA256.

O le taimi muamua e te ta'e ai le keyring_file, o fuainumera faila ma se siaki tupe e fa'atatau, e manatua e le 'au'aunaga, ma e fa'aaoga suiga pe a fetaui. A suia le faila, e faʻafouina le siaki tupe.

Ua uma ona matou talanoaina le tele o fesili e uiga i vaults autu. Ae ui i lea, o loʻo i ai se isi autu taua e masani ona galo pe le malamalama: faʻasoa ki i luga o sapalai.

O le a le uiga o la'u tala? O 'au'aunaga ta'itasi (mo se fa'ata'ita'iga, Percona Server) i totonu o le fuifui e tatau ona i ai se isi nofoaga i luga o le Vault Server e tatau ona teu ai e le Percona Server ana ki. O Matai Matai ta'itasi o lo'o fa'asaoina i totonu o le fa'aputuga o lo'o iai le GUID o le Percona Server i totonu o lona fa'amatalaga. Aisea e taua ai? Va'ai faalemafaufau e na'o le tasi le Vault Server ma Percona Servers uma i totonu o le fuifui e fa'aaoga lena Vault Server e tasi. E foliga manino mai le faafitauli. Afai na fa'aogaina uma e Percona Servers se Master Key e aunoa ma ni fa'amatalaga tulaga ese, pei ole id = 1, id = 2, ma isi, ona fa'aoga uma ai lea e sau uma i le fuifui le Master Key e tasi. O le mea o loʻo tuʻuina mai e le GUID o le eseesega i le va o 'auʻaunaga. Aisea la e talanoa ai e uiga i le faʻasoaina o ki i le va o sapalai pe afai o loʻo i ai se GUID tulaga ese? O loʻo i ai se isi mea faʻapipiʻi - keyring_udf. Faatasi ai ma lenei faʻapipiʻi, e mafai e lau tagata faʻaoga server ona teuina a latou ki i luga o le Vault server. O le faʻafitauli e tupu pe a faia e se tagata faʻaoga se ki i luga o le server1, mo se faʻataʻitaʻiga, ona taumafai lea e fai se ki ma le ID tutusa ile server2, mo se faʻataʻitaʻiga:

--server1:
select keyring_key_store('ROB_1','AES',"123456789012345");
1
--1 значит успешное завершение
--server2:
select keyring_key_store('ROB_1','AES',"543210987654321");
1

Faatali. O lo'o fa'aogaina e 'au'au uma le Vault Server, e le tatau ea ona fa'aletonu le keyring_key_store i le server2? O le mea e malie ai, afai e te taumafai e fai le mea lava e tasi i luga o le tasi server, o le ae mauaina se mea sese:

--server1:
select keyring_key_store('ROB_1','AES',"123456789012345");
1
select keyring_key_store('ROB_1','AES',"543210987654321");
0

E sa'o, ua leva ona iai le ROB_1.

Seʻi o tatou talanoaina muamua le faaaʻoaʻoga lona lua. E pei ona matou fai atu muamua, keyring_vault poʻo soʻo se isi faʻapipiʻi keyring e teu uma ID autu i le mafaufau. O lea la, a maeʻa ona faia se ki fou, ROB_1 faʻaopoopo i le server1, ma faʻaopoopo i le tuʻuina atu o lenei ki i Vault, e faʻaopoopoina foi le ki i le cache. I le taimi nei, pe a matou taumafai e faʻaopoopo le ki lava e tasi i le taimi lona lua, keyring_vault siaki pe o iai le ki i totonu o le cache ma lafo se mea sese.

I le tulaga muamua e ese le tulaga. O le Server1 ma le server2 o lo'o i ai fa'aoga eseese. A mae'a ona fa'aopoopo le ROB_1 i le fa'aoga autu ile server1 ma le Vault server, o le fa'aoga autu ile server2 ua le fetaui. E leai se ROB_2 ki i totonu o le cache ile server1. O le mea lea, o le ROB_1 ki o loʻo tusia i le keyring_key_store ma le Vault server, lea e suia moni (!) le tau muamua. O le taimi nei o le ROB_1 ki i luga o le Vault server o le 543210987654321. O le mea e malie ai, o le Vault server e le poloka ia gaioiga ma faigofie ona toe fa'asolo le tau tuai.

Ua mafai nei ona tatou va'ai pe aisea e taua ai le vaeluaga o le server i Vault - pe a e fa'aogaina keyring_udf ma mana'o e teu ki i Vault. E faʻafefea ona ausia lenei vavaeesega i luga o se Vault server?

E lua auala e vaelua ai i Vault. E mafai ona e faia ni mea fa'amautu eseese mo 'au'aunaga ta'itasi, po'o le fa'aogaina o auala eseese i totonu o le fa'amaufa'ailoga e tasi. E sili ona faʻaalia lenei mea i faʻataʻitaʻiga. Seʻi o tatou vaʻavaʻai muamua i mea faʻapipiʻi taʻitasi:

--server1:
vault_url = http://127.0.0.1:8200
secret_mount_point = server1_mount
token = (...)
vault_ca = (...)

--server2:
vault_url = http://127.0.0.1:8200
secret_mount_point = sever2_mount
token = (...)
vault_ca = (...)

O iinei e mafai ona e vaʻaia ai o loʻo faʻaogaina e le server1 ma le server2 ni mea faʻapipiʻi eseese. Pe a vaeluaina auala, o le faʻatulagaga o le a pei o lenei:

--server1:
vault_url = http://127.0.0.1:8200
secret_mount_point = mount_point/server1
token = (...)
vault_ca = (...)
--server2:
vault_url = http://127.0.0.1:8200
secret_mount_point = mount_point/sever2
token = (...)
vault_ca = (...)

I lenei tulaga, o lo'o fa'aogaina uma e 'au'aunaga le mea e tasi o le mauga "mount_point", ae 'ese'ese auala. A e fatuina le mealilo muamua ile server1 e faʻaaoga ai lenei auala, o le Vault server e otometi lava ona fatuina se "server1" directory. Mo server2 e tutusa mea uma. A e tapeina le mealilo mulimuli i le mount_point/server1 poʻo le mount_point/server2, e tape foʻi e le Vault server na tusitaiala. I le tulaga e te faʻaogaina ai le vaeluaga o le ala, e tatau ona e fatuina naʻo le tasi le mauga ma sui faila faʻapipiʻi ina ia faʻaogaina e le 'auʻaunaga auala eseese. E mafai ona fa'atūina se fa'amautu e fa'aaoga ai se talosaga HTTP. Fa'aaogā CURL e mafai ona fai fa'apenei:

curl -L -H "X-Vault-Token: TOKEN" –cacert VAULT_CA
--data '{"type":"generic"}' --request POST VAULT_URL/v1/sys/mounts/SECRET_MOUNT_POINT

O fa'afanua uma (TOKEN, VAULT_CA, VAULT_URL, SECRET_MOUNT_POINT) e fetaui ma fa'asologa o faila faila. Ioe, e mafai ona e faʻaogaina Vault utilities e fai ai le mea lava e tasi. Ae sili atu ona faigofie le otometi le fausiaina o se nofoaga mautu. Ou te faʻamoemoe e te maua le aoga o lenei faʻamatalaga ma o le a tatou vaʻai ia te oe i isi tala i lenei faasologa.

Fa'ailoga i MySQL: Keystore

Faitau atili:

puna: www.habr.com

Faaopoopo i ai se faamatalaga