Crioptachadh ann am MySQL: Keystore

Le dùil gun tòisich clàradh ùr airson a’ chùrsa "Stòr-dàta" Tha sinn air eadar-theangachadh de artaigil feumail ullachadh dhut.

Crioptachadh ann am MySQL: Keystore

Nochd crioptachadh dàta follaiseach (TDE). Percona am frithealaiche airson MySQL agus MySQL airson ùine mhòr. Ach na smaoinich thu a-riamh air mar a tha e ag obair fon chochall agus dè a’ bhuaidh a dh’ fhaodadh a bhith aig TDE air an t-seirbheisiche agad? Anns an t-sreath artaigilean seo seallaidh sinn air mar a tha TDE ag obair air an taobh a-staigh. Feuch an tòisich sinn le prìomh stòradh, oir tha feum air seo gus an obraich crioptachadh sam bith. An uairsin bheir sinn sùil nas mionaidiche air mar a tha crioptachadh ag obair ann am Percona Server airson MySQL / MySQL agus dè na feartan a bharrachd a tha aig Percona Server airson MySQL.

Cearcall meur-chlàr MySQL

Is e plugins a th’ ann an keyring a leigeas leis an fhrithealaiche iuchraichean a cheasnachadh, a chruthachadh agus a dhubhadh às ann am faidhle ionadail (keyring_file) no air frithealaiche iomallach (leithid HashiCorp Vault). Bidh iuchraichean an-còmhnaidh air an tasgadh gu h-ionadail gus an lorg iad nas luaithe.

Faodar plugins a roinn ann an dà roinn:

  • Stòradh ionadail. Mar eisimpleir, faidhle ionadail (is e cearcall-iuchrach stèidhichte air faidhle a chanas sinn ri seo).
  • Stòradh iomallach. Mar eisimpleir, Vault Server (is e cearcall-iuchrach stèidhichte air frithealaiche a chanas sinn ri seo).

Tha an sgaradh seo cudromach oir bidh diofar sheòrsaichean stòraidh gan giùlan fhèin beagan eadar-dhealaichte, chan ann a-mhàin nuair a bhios iad a’ stòradh agus a’ faighinn iuchraichean, ach cuideachd nuair a bhios iad gan ruith.

Nuair a bhios tu a’ cleachdadh stòradh fhaidhlichean, nuair a thòisicheas tu, thèid susbaint iomlan an stòraidh a luchdachadh a-steach don tasgadan: id iuchrach, prìomh neach-cleachdaidh, prìomh sheòrsa, agus an iuchair fhèin.

Ann an cùis stòr stèidhichte air frithealaiche (leithid Vault Server), chan eil ach an id iuchrach agus prìomh neach-cleachdaidh air an luchdachadh aig àm tòiseachaidh, agus mar sin cha bhith faighinn na h-iuchraichean gu lèir a’ maill air an toiseach tòiseachaidh. Tha iuchraichean air an luchdachadh gu leisg. Is e sin, tha an iuchair fhèin air a luchdachadh bho Vault dìreach nuair a tha feum air. Nuair a bhios e air a luchdachadh sìos, tha an iuchair air a thasgadh mar chuimhne gus nach fheum e faighinn thuige tro cheanglaichean TLS ris an Vault Server san àm ri teachd. An ath rud, leig dhuinn sùil a thoirt air dè am fiosrachadh a tha an làthair anns a’ phrìomh stòr.

Tha na leanas anns a’ phrìomh fhiosrachadh:

  • id iuchrach - prìomh aithnichear, mar eisimpleir:
    INNODBKey-764d382a-7324-11e9-ad8f-9cb6d0d5dc99-1
  • prìomh sheòrsa - prìomh sheòrsa stèidhichte air an algairim crioptachaidh a chaidh a chleachdadh, luachan a dh’ fhaodadh a bhith ann: “AES”, “RSA” no “DSA”.
  • fad iuchrach - prìomh fhad ann am bytes, AES: 16, 24 no 32, RSA 128, 256, 512 agus DSA 128, 256 no 384.
  • -cleachdaidh - sealbhadair an iuchair. Mas e siostam an iuchair, mar eisimpleir, Master Key, tha an raon seo falamh. Ma thèid iuchair a chruthachadh le keyring_udf, aithnichidh an raon seo sealbhadair na h-iuchrach.
  • an iuchair fhèin

Tha an iuchair air a chomharrachadh gu sònraichte leis a 'chàraid: key_id, cleachdaiche.

Tha eadar-dhealachaidhean ann cuideachd ann an stòradh agus sguabadh às iuchraichean.

Tha stòradh fhaidhlichean nas luaithe. Is dòcha gu bheil thu a’ smaoineachadh gu bheil prìomh stòr dìreach a’ sgrìobhadh iuchair faidhle aon uair, ach chan eil, tha barrachd a’ dol an seo. Nuair a thèid atharrachadh stòraidh faidhle a dhèanamh, thèid leth-bhreac cùl-taic den t-susbaint gu lèir a chruthachadh an toiseach. Canaidh sinn gur e my_biggest_secrets an t-ainm a th’ air an fhaidhle, an uairsin bidh an lethbhreac cùl-taic my_biggest_secrets.backup. An uairsin, thèid an tasgadan atharrachadh (tha iuchraichean air an cur ris no air an toirt às) agus, ma tha a h-uile càil soirbheachail, thèid an tasgadan ath-shuidheachadh gu faidhle. Ann an cùisean ainneamh, leithid fàilligeadh frithealaiche, is dòcha gum faic thu am faidhle cùl-taic seo. Thèid am faidhle cùl-taic a dhubhadh às an ath thuras a thèid na h-iuchraichean a luchdachadh (mar as trice às deidh don fhrithealaiche ath-thòiseachadh).

Nuair a bhios tu a’ sàbhaladh no a’ sguabadh às iuchair ann an stòradh frithealaiche, feumaidh an stòradh ceangal ris an t-seirbheisiche MySQL leis na h-òrdughan “cuir an iuchair” / “iarr sguab às iuchrach”.

Rachamaid air ais gu astar tòiseachaidh an fhrithealaiche. A bharrachd air an fhìrinn gu bheil an seilear fhèin a’ toirt buaidh air an astar cur air bhog, tha ceist ann cuideachd cia mheud iuchair bhon chrùisg a dh’ fheumar fhaighinn air ais aig àm tòiseachaidh. Gu dearbh, tha seo gu sònraichte cudromach airson stòradh frithealaiche. Aig toiseach tòiseachaidh, bidh an frithealaiche a’ sgrùdadh dè an iuchair a tha a dhìth airson bùird / àite bùird crioptaichte agus ag iarraidh an iuchair bhon stòradh. Air frithealaiche “glan” le crioptachadh Master Key, feumaidh aon Master Key a bhith ann, a dh’ fheumar fhaighinn air ais bhon stòradh. Ach, dh’ fhaodadh gum bi feum air àireamh nas motha de iuchraichean, mar eisimpleir, nuair a tha am frithealaiche cùl-taic ag ath-nuadhachadh cùl-taic bhon phrìomh fhrithealaiche. Ann an leithid de chùisean, bu chòir cuairteachadh an Master Key a thoirt seachad. Bidh seo air a chòmhdach nas mionaidiche ann an artaigilean san àm ri teachd, ged an seo bu mhath leam a thoirt fa-near gur dòcha gun toir frithealaiche a tha a’ cleachdadh ioma Master Keys beagan nas fhaide airson tòiseachadh, gu sònraichte nuair a bhios tu a’ cleachdadh prìomh stòr taobh an fhrithealaiche.

A-nis bruidhnidh sinn beagan a bharrachd mu keyring_file. Nuair a bha mi a’ leasachadh keyring_file, bha dragh orm cuideachd mar a nì mi sgrùdadh airson atharrachaidhean keyring_file fhad ‘s a tha am frithealaiche a’ ruith. Ann an 5.7, chaidh an sgrùdadh a dhèanamh stèidhichte air staitistig faidhle, nach robh na fhuasgladh math, agus ann an 8.0 chaidh seic SHA256 a chuir na àite.

A’ chiad uair a ruitheas tu keyring_file, thathas a’ tomhas staitistig faidhle agus seic, a tha air an cuimhneachadh leis an fhrithealaiche, agus cha tèid atharrachaidhean a chuir an sàs ach ma tha iad a’ maidseadh. Nuair a dh'atharraicheas am faidhle, thèid an checksum ùrachadh.

Tha sinn mu thràth air mòran cheistean a chòmhdach mu phrìomh chrùislean. Ach, tha cuspair cudromach eile ann a tha gu tric air a dhìochuimhneachadh no air a mhì-thuigsinn: a’ roinn iuchraichean thairis air frithealaichean.

Dè tha mi a' ciallachadh? Feumaidh àite air leth a bhith aig gach frithealaiche (mar eisimpleir, Percona Server) anns a’ bhraisle air an Vault Server anns am feum Percona Server na h-iuchraichean aige a stòradh. Anns gach prìomh iuchair a chaidh a shàbhaladh sa stòradh tha GUID an t-seirbheisiche Percona taobh a-staigh an aithnichear aige. Carson a tha e cudromach? Smaoinich nach eil agad ach aon Vault Server agus a h-uile frithealaiche Percona sa bhuidheann a’ cleachdadh an aon Vault Server sin. Tha e coltach gu bheil an duilgheadas follaiseach. Nam biodh a h-uile frithealaiche Percona a’ cleachdadh Prìomh iuchair às aonais aithnichearan gun samhail, leithid id = 1, id = 2, msaa, bhiodh a h-uile seirbheisiche sa bhuidheann a’ cleachdadh an aon phrìomh iuchair. Is e na tha an GUID a’ toirt seachad an eadar-dhealachadh eadar frithealaichean. Carson an uairsin bruidhinn mu bhith a’ roinneadh iuchraichean eadar frithealaichean ma tha GUID sònraichte ann mu thràth? Tha plugan eile ann - keyring_udf. Leis a’ plugan seo, faodaidh neach-cleachdaidh an fhrithealaiche agad na h-iuchraichean aca a stòradh air frithealaiche Vault. Bidh an duilgheadas a’ tachairt nuair a chruthaicheas neach-cleachdaidh iuchair air server1, mar eisimpleir, agus an uairsin a’ feuchainn ri iuchair a chruthachadh leis an aon ID air server2, mar eisimpleir:

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

Fuirich. Tha an dà fhrithealaiche a’ cleachdadh an aon fhrithealaiche Vault, nach bu chòir don ghnìomh keyring_key_store fàiligeadh air server2? Gu inntinneach, ma dh'fheuchas tu ris an aon rud a dhèanamh air aon fhrithealaiche, gheibh thu mearachd:

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

Tha sin ceart, tha ROB_1 ann mu thràth.

Bruidhnidh sinn an dàrna eisimpleir an toiseach. Mar a thuirt sinn na bu thràithe, bidh keyring_vault no plugan keyring sam bith eile a’ tasgadh a h-uile prìomh ID mar chuimhneachan. Mar sin, às deidh dhut iuchair ùr a chruthachadh, thèid ROB_1 a chur ri server1, agus a bharrachd air an iuchair seo a chuir gu Vault, thèid an iuchair a chuir ris an tasgadan cuideachd. A-nis, nuair a dh’ fheuchas sinn ris an aon iuchair a chuir ris an dàrna turas, nì keyring_vault sgrùdadh a bheil an iuchair anns an tasgadan agus a’ tilgeil mearachd.

Anns a 'chiad chùis, tha an suidheachadh eadar-dhealaichte. Tha caches fa leth aig Server1 agus server2. Às deidh dha ROB_1 a chuir ris an tasgadan iuchrach air server1 agus am frithealaiche Vault, tha am prìomh tasgadan air server2 a-mach à sioncranachadh. Chan eil iuchair ROB_2 san tasgadan air server1. Mar sin, tha an iuchair ROB_1 air a sgrìobhadh chun keyring_key_store agus chun an fhrithealaiche Vault, a tha dha-rìribh a’ sgrìobhadh thairis air (!) an luach a bh’ ann roimhe. A-nis is e an iuchair ROB_1 air an fhrithealaiche Vault 543210987654321. Gu h-inntinneach, chan eil am frithealaiche Vault a’ cur bacadh air gnìomhan mar sin agus bidh e gu furasta a’ sgrìobhadh thairis air an t-seann luach.

A-nis chì sinn carson a dh’ fhaodadh sgaradh frithealaiche ann an Vault a bhith cudromach - nuair a tha thu a’ cleachdadh keyring_udf agus ag iarraidh iuchraichean a stòradh ann an Vault. Ciamar a choileanas tu an dealachadh seo air frithealaiche Vault?

Tha dà dhòigh air sgaradh a-steach do Vault. Faodaidh tu diofar phuingean sreap a chruthachadh airson gach frithealaiche, no diofar shlighean a chleachdadh taobh a-staigh an aon phuing sreap. Tha seo air a nochdadh nas fheàrr le eisimpleirean. Mar sin leig dhuinn sùil a thoirt air na puingean sreap fa leth an-toiseach:

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

An seo chì thu gu bheil server1 agus server2 a’ cleachdadh diofar phuingean sreap. Nuair a bhios tu a’ roinneadh nan slighean, seallaidh an rèiteachadh mar seo:

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

Anns a 'chùis seo, bidh an dà fhrithealaiche a' cleachdadh an aon phuing mount "mount_point", ach slighean eadar-dhealaichte. Nuair a chruthaicheas tu a’ chiad dìomhaireachd air server1 a’ cleachdadh na slighe seo, cruthaichidh am frithealaiche Vault eòlaire “server1” gu fèin-obrachail. Airson server2 tha a h-uile dad coltach. Nuair a sguabas tu às an dìomhair mu dheireadh ann an mount_point/server1 no mount_point/server2, bidh am frithealaiche Vault cuideachd a’ cuir às do na clàran sin. Ma chleachdas tu sgaradh slighe, feumaidh tu dìreach aon phuing sreap a chruthachadh agus na faidhlichean rèiteachaidh atharrachadh gus am bi na frithealaichean a’ cleachdadh slighean fa-leth. Faodar puing sreap a chruthachadh a’ cleachdadh iarrtas HTTP. Le bhith a’ cleachdadh CURL faodar seo a dhèanamh mar seo:

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

Tha a h-uile raon (TOKEN, VAULT_CA, VAULT_URL, SECRET_MOUNT_POINT) a’ freagairt ri paramadairean an fhaidhle rèiteachaidh. Gu dearbh, faodaidh tu goireasan Vault a chleachdadh gus an aon rud a dhèanamh. Ach tha e nas fhasa cruthachadh puing sreap a dhèanamh fèin-ghluasadach. Tha mi an dòchas gum bi am fiosrachadh seo feumail dhut agus chì sinn thu anns na h-ath artaigilean san t-sreath seo.

Crioptachadh ann am MySQL: Keystore

Leugh tuilleadh:

Source: www.habr.com

Cuir beachd ann