Encryption ho MySQL: Keystore

Ka tebello ea ho qala ho ngolisoa ho hocha bakeng sa thupelo "Database" Re u lokiselitse phetolelo ea sengoloa se bohlokoa bakeng sa hau.

Encryption ho MySQL: Keystore

Transparent Data Encryption (TDE) e hlahile ho Percona Server bakeng sa MySQL le MySQL nako e telele. Empa na u kile ua nahana ka hore na e sebetsa joang tlas'a hood le hore na TDE e ka ba le phello efe ho seva sa hau? Letotong lena la lingoliloeng re tla sheba hore na TDE e sebetsa joang kahare. Ha re qaleng ka polokelo ea bohlokoa, kaha sena sea hlokahala hore encryption efe kapa efe e sebetse. Joale re tla shebisisa hore na encryption e sebetsa joang ho Percona Server bakeng sa MySQL/MySQL le hore na Percona Server ea MySQL e na le likarolo life tse ling.

Keyring ea MySQL

Keyring ke li-plugins tse lumellang seva ho botsa, ho theha le ho hlakola linotlolo faeleng ea lehae (keyring_file) kapa ho seva se hole (joalo ka HashiCorp Vault). Linotlolo li lula li bolokiloe sebakeng sa heno ho potlakisa ho khutlisa ha tsona.

Li-plugins li ka aroloa ka mekhahlelo e 'meli:

  • Sebaka sa polokelo ea lehae. Mohlala, faele ea lehae (eo re e bitsang keyring e thehiloeng faeleng).
  • Polokelo e hole. Mohlala, Vault Server (re e bitsa keyring e thehiloeng ho seva).

Karohano ena ke ea bohlokoa hobane mefuta e fapaneng ea polokelo e itšoara ka tsela e fapaneng hanyenyane, eseng feela ha u boloka le ho fumana linotlolo, empa hape le ha u li tsamaisa.

Ha o sebelisa polokelo ea faele, ha o qala, likahare tsohle tsa polokelo li kenngoa ka har'a cache: id ea senotlolo, mosebelisi oa senotlolo, mofuta oa senotlolo, le senotlolo ka boeona.

Tabeng ea lebenkele le lehlakoreng la seva (joalo ka Vault Server), ke feela ID ea senotlolo le mosebelisi oa senotlolo tse kentsoeng qalong, kahoo ho fumana linotlolo tsohle ha ho liehe ho qala. Linotlolo li laeloa ka botsoa. Ke hore, senotlolo ka boeona se laeloa ho tsoa ho Vault ha feela se hlokahala. Ha e se e jarollotsoe, senotlolo se bolokoa mohopolong e le hore ha se hloke ho fumaneha ka likhokahano tsa TLS ho Vault Server nakong e tlang. Ka mor'a moo, a re shebeng hore na ke boitsebiso bofe bo teng lebenkeleng la linotlolo.

Lintlha tsa bohlokoa li na le lintlha tse latelang:

  • senotlolo id - ID ea senotlolo, mohlala:
    INNODBKey-764d382a-7324-11e9-ad8f-9cb6d0d5dc99-1
  • mofuta oa senotlolo - mofuta oa senotlolo o thehiloeng ho algorithm ea encryption e sebelisitsoeng, litekanyetso tse ka khonehang: "AES", "RSA" kapa "DSA".
  • bolelele ba senotlolo - bolelele ba senotlolo ka li-byte, AES: 16, 24 kapa 32, RSA 128, 256, 512 le DSA 128, 256 kapa 384.
  • user want-meet.ru - monga senotlolo. Haeba senotlolo ke tsamaiso, mohlala, Master Key, joale tšimo ena ha e na letho. Haeba senotlolo se entsoe ka keyring_udf, joale sebaka sena se supa mong'a senotlolo.
  • senotlolo ka bosona

Senotlolo se khetholloa ka mokhoa o ikhethileng ke para: key_id, user.

Ho boetse ho na le liphapang mabapi le ho boloka le ho hlakola linotlolo.

Polokelo ea faele e potlakile. U ka 'na ua nahana hore lebenkele la linotlolo le ngola feela senotlolo sa faele hang, empa che, ho na le tse ling tse ntseng li tsoela pele mona. Nako le nako ha ho etsoa phetoho ea polokelo ea lifaele, kopi ea "backup" ea litaba tsohle e qala ho etsoa. Ha re re faele e bitsoa my_biggest_secrets, joale kopi ea bekapo e tla ba my_biggest_secrets.backup. Ka mor'a moo, cache e fetoloa (linotlolo li kenngoa kapa li hlakoloa) 'me, haeba ntho e' ngoe le e 'ngoe e atlehile, cache e khutlisetsoa faeleng. Maemong a sa tloaelehang, joalo ka ho hloleha ha seva, u ka bona faele ena ea bekapo. Faele ea "backup" e hlakotsoe nakong e tlang ha linotlolo li kentsoe (hangata kamora hore seva se qale ho qala hape).

Ha u boloka kapa u hlakola senotlolo sebakeng sa polokelo ea seva, polokelo e tlameha ho hokela ho seva sa MySQL ka litaelo tsa "romela senotlolo" / "kopo ea ho hlakola senotlolo".

Ha re khutlele ho lebelo la ho qala seva. Ntle le taba ea hore lebelo la ho qala le angoa ke vault ka boeona, ho boetse ho na le taba ea hore na linotlolo tse kae tse tsoang ho vault li hloka ho khutlisoa qalong. Ha e le hantle, sena ke sa bohlokoa ka ho khetheha bakeng sa polokelo ea seva. Ha e qala, seva se hlahloba hore na ke senotlolo sefe se hlokahalang bakeng sa litafole / libaka tsa litafole tse patiloeng ebe se kopa senotlolo ho tsoa polokelong. Ho seva se "hloekileng" se nang le encryption ea Master Key, ho tlameha ho ba le Master Key e le 'ngoe, e tlamehang ho khutlisoa polokelong. Leha ho le joalo, ho ka 'na ha hlokahala palo e kholoanyane ea linotlolo, mohlala, ha seva sa "backup" se khutlisetsa bekapo ho tsoa ho seva sa mantlha. Maemong a joalo, ho potoloha ha Master Key ho lokela ho fanoa. Sena se tla tšohloa ka ho qaqileng haholoanyane lihloohong tse tlang, le hoja mona ke rata ho hlokomela hore seva se sebelisang Master Keys a mangata se ka 'na sa nka nako e teletsana ho qala, haholo-holo ha se sebelisa lebenkele la senotlolo sa lehlakoreng la seva.

Joale ha re bue haholoanyane ka keyring_file. Ha ke ntse ke hlahisa keyring_file, ke ne ke boetse ke amehile ka mokhoa oa ho hlahloba liphetoho tsa keyring_file ha seva se ntse se sebetsa. Ka 5.7, cheke e entsoe ho latela lipalo-palo tsa faele, e neng e se tharollo e nepahetseng, 'me ho 8.0 e ile ea nkeloa sebaka ke SHA256 checksum.

Lekhetlo la pele ha u tsamaisa keyring_file, lipalo-palo tsa faele le cheke li baloa, tse hopoloang ke seva, 'me liphetoho li sebelisoa feela ha li lumellana. Ha faele e fetoha, checksum ea ntlafatsoa.

Re se re arabile lipotso tse ngata mabapi le li-vaults tsa bohlokoa. Leha ho le joalo, ho na le taba e 'ngoe ea bohlokoa eo hangata e lebaloang kapa e sa utloisisoeng hantle: ho arolelana linotlolo ho pholletsa le li-server.

Seo ke se bolelang? Seva e 'ngoe le e' ngoe (mohlala, Percona Server) sehlopheng se tlameha ho ba le sebaka se arohaneng ho Vault Server moo Percona Server e lokelang ho boloka linotlolo tsa eona. Senotlolo se seng le se seng se bolokiloeng polokelong se na le GUID ea Seva ea Percona ka har'a sekhetho sa eona. Ke hobane'ng ha e le ea bohlokoa? Ak'u nahane u na le Vault Server e le 'ngoe feela 'me li-server tsohle tsa Percona sehlopheng li sebelisa Vault Server e le' ngoe. Bothata bo bonahala bo hlakile. Haeba li-server tsohle tsa Percona li ne li sebelisa Master Key ntle le li-identifiers tse ikhethang, tse kang id = 1, id = 2, joalo-joalo, joale li-server tsohle tse sehlopheng li ne li tla sebelisa Master Key e tšoanang. Seo GUID e fanang ka sona ke phapang lipakeng tsa li-server. Ke hobane'ng ha u bua ka ho arolelana linotlolo pakeng tsa li-server haeba GUID e ikhethang e se e ntse e le teng? Ho na le plugin e 'ngoe - keyring_udf. Ka plugin ena, mosebelisi oa hau oa seva a ka boloka linotlolo tsa bona ho seva sa Vault. Bothata bo etsahala ha mosebelisi a theha senotlolo ho seva1, mohlala, ebe o leka ho theha senotlolo ka ID e tšoanang ho server2, mohlala:

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

Ema. Li-server ka bobeli li sebelisa Vault Server e tšoanang, na mosebetsi oa keyring_key_store ha oa lokela ho hloleha ho seva2? Ho khahlisang, haeba u leka ho etsa se tšoanang ho seva se le seng, u tla fumana phoso:

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

Ho lokile, ROB_1 e se e le teng.

A re tšohleng mohlala oa bobeli pele. Joalokaha re boletse pejana, keyring_vault kapa plugin efe kapa efe ea keyring e boloka li-ID tsohle tsa bohlokoa mohopolong. Kahoo, kamora ho theha senotlolo se secha, ROB_1 e eketsoa ho seva1, 'me ntle le ho romella senotlolo sena ho Vault, senotlolo se boetse se eketsoa ho cache. Joale, ha re leka ho eketsa senotlolo se tšoanang lekhetlo la bobeli, keyring_vault e hlahloba hore na senotlolo se teng ka har'a cache ebe e lahlela phoso.

Boemong ba pele, boemo bo fapane. Server1 le server2 li na le li-cache tse arohaneng. Kamora ho kenyelletsa ROB_1 ho cache ea senotlolo ho seva1 le seva sa Vault, cache ea senotlolo ho server2 ha e sa lumellana. Ha ho senotlolo sa ROB_2 cache ho seva1. Kahoo, senotlolo sa ROB_1 se ngotsoe ho keyring_key_store le ho seva sa Vault, se hlileng se fetisang (!) boleng bo fetileng. Hona joale senotlolo sa ROB_1 ho seva sa Vault ke 543210987654321. Hoa thahasellisa hore seva sa Vault ha se thibele liketso tse joalo 'me se hlakola boleng ba khale habonolo.

Joale re ka bona hore na hobaneng karohano ea seva ho Vault e ka ba bohlokoa - ha o sebelisa keyring_udf mme o batla ho boloka linotlolo ho Vault. U ka fihlela karohano ee joang ho seva sa Vault?

Ho na le mekhoa e 'meli ea ho arola Vault. U ka theha libaka tse fapaneng tsa ho phahamisa seva ka seng, kapa u sebelise litsela tse fapaneng sebakeng se le seng sa thaba. Sena se bontšoa hantle ka mehlala. Kahoo a re shebeng lintlha tsa motho ka mong pele:

--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 = (...)

Mona u ka bona hore server1 le server2 li sebelisa libaka tse fapaneng tsa ho thaba. Ha u arola litsela, tlhophiso e tla shebahala tjena:

--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 = (...)

Tabeng ena, li-server ka bobeli li sebelisa sebaka se le seng sa "mount_point", empa litsela tse fapaneng. Ha o theha lekunutu la pele ho server1 o sebelisa tsela ena, seva sa Vault se iketsetsa "server1" directory. Bakeng sa server2 ntho e 'ngoe le e' ngoe e tšoana. Ha o hlakola lekunutu la ho qetela ho mount_point/server1 kapa mount_point/server2, seva sa Vault le sona se hlakola li-directory tseo. Haeba u sebelisa karohano ea litsela, u tlameha ho theha ntlha e le 'ngoe feela ea ho hloa le ho fetola lifaele tsa tlhophiso e le hore li-server li sebelise litsela tse arohaneng. Sebaka sa marang-rang se ka etsoa ho sebelisoa kopo ea HTTP. Ho sebelisa CURL sena se ka etsoa ka tsela ena:

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

Likarolo tsohle (TOKEN, VAULT_CA, VAULT_URL, SECRET_MOUNT_POINT) li tsamaisana le maemo a faele ea tiisetso. Ehlile, o ka sebelisa lisebelisoa tsa Vault ho etsa se tšoanang. Empa ho bonolo ho iketsetsa tlhahiso ea sebaka sa thaba. Ke tšepa hore u tla fumana boitsebiso bona bo le molemo ’me re tla u bona lihloohong tse latelang letotong lena.

Encryption ho MySQL: Keystore

Bala haholoanyane:

Source: www.habr.com

Eketsa ka tlhaloso