MySQLде шифрлөө: Башкы ачкычтын айлануусу

Курска жаңы кабыл алуунун башталышын күтүү менен "Маалымат базасы" биз MySQLде шифрлөө жөнүндө бир катар макалаларды жарыялоону улантабыз.

Бул сериянын мурунку макаласында биз талкууладык башкы ачкыч шифрлөө кантип иштейт. Бүгүн, мурда алынган билимдердин негизинде, негизги баскычтардын айлануусун карап көрөлү.

Башкы ачкычтын айлануусу жаңы башкы ачкычты түзүүнү жана ушул жаңы ачкыч менен таблица мейкиндигинин ачкычтарын (таблица мейкиндигинин аталыштарында сакталган) кайра шифрлөөнү камтыйт.

Шифрленген таблица мейкиндигинин аталышы кандай экенин эстеп көрөлү:

MySQLде шифрлөө: Башкы ачкычтын айлануусу

Мурунку макаладан биз билебиз, сервер баштаганда бардык шифрленген таблицалардын баштарын окуйт жана эң чоң KEY ID-ди эстейт. Мисалы, бизде KEY менен үч таблица болсоID = 3 жана ачкыч менен бир столID = 4, анда максималдуу ачкыч идентификатору 4 болот. Келгиле, бул АЧКЫЧ ID - MAX АЧКЫЧ ID деп атайлы.

Башкы ачкычты айлантуу кантип иштейт

1. Колдонуучу ALTER INNODB MASTER KEY аткарат.

2. Сервер UUID жана KEY сервери менен жаңы башкы ачкычты түзүү үчүн ачкычты сурайтID бир плюс MAX барабарНЕГИЗГИID. Ошентип, биз INNODBге барабар башкы ачкыч идентификаторун алабызKEY-UUID-(MAXНЕГИЗГИID + 1). Негизги ачкыч ийгиликтүү түзүлгөндөн кийин, MAX KEY ID бир көбөйөт (мис. MAXНЕГИЗГИID=MAXНЕГИЗГИID + 1).

3. Сервер башкы ачкыч менен шифрленген бардык таблица мейкиндиктерин жана ар бир таблица мейкиндигин сканерлейт:

  • стол мейкиндигинин ачкычын жаңы башкы ачкыч менен шифрлейт;

  • ачкыч идентификаторун жаңы MAX үчүн жаңыртатНЕГИЗГИID

  • эгерде UUID сервер UUIDден башкача болсо, анда UUID серверин жаңыртыңыз.

Белгилүү болгондой, таблицаны чечмелөө үчүн колдонулган Мастер Ачкыч идентификатору UUIDден жана таблица мейкиндигинин аталышынан окулган KEY IDден турат. Азыр биз жасап жаткан нерсе бул маалыматты таблица мейкиндигин шифрлөө башындагы жаңыртуу, андыктан сервер туура башкы ачкычты алат.

Эгерде бизде ар кандай жерлерден стол мейкиндиктери бар болсо, мисалы, ар кандай камдык көчүрмөлөр, анда алар ар кандай башкы ачкычтарды колдонушу мүмкүн. Бул башкы ачкычтардын бардыгы сервер башталганда репозиторийден алынышы керек болот. Бул сервердин башталышын жайлатышы мүмкүн, айрыкча сервер тарабында ачкыч дүкөнү колдонулса. Башкы ачкычты айландыруу менен, биз стол мейкиндигинин ачкычтарын бардык таблицалар үчүн бирдей болгон бир башкы ачкыч менен кайра шифрлейбиз. Сервер ишке киргенде бир гана башкы ачкычты алышы керек.

Бул, албетте, жөн гана жагымдуу терс таасири. Башкы ачкычты айлантуунун негизги максаты - серверибизди коопсуз кылуу. Башкы ачкыч кандайдыр бир жол менен сейфтен (мисалы, Vault серверинен) уурдалган учурда, жаңы башкы ачкычты жаратып, уурдалган ачкычты жараксыз кылып, стол мейкиндигинин ачкычтарын кайра шифрлөө мүмкүн. Биз коопсузбуз... дээрлик.

Мурунку макалада мен стол мейкиндигинин ачкычы уурдалгандан кийин, үчүнчү тарап аны маалыматтардын шифрин чечиш үчүн кантип колдонушу мүмкүн экендиги жөнүндө айттым. Биздин дискке кирүү мүмкүнчүлүгү бар болсо. Эгерде башкы ачкыч уурдалган болсо жана сизде шифрленген маалыматтарга кирүү мүмкүнчүлүгүңүз болсо, сиз уурдалган башкы ачкычты колдонуп, стол мейкиндигинин ачкычынын шифрин чечмелеп, шифрленген маалыматтарды ала аласыз. Көрүнүп тургандай, башкы ачкычтын айлануусу бул учурда жардам бербейт. Биз стол мейкиндигинин ачкычын жаңы башкы ачкыч менен кайра шифрлейбиз, бирок маалыматтарды шифрлөө/шифрлөө үчүн колдонулган чыныгы ачкыч ошол эле бойдон калат. Ошондуктан, "хакер" маалыматтарды шифрлөө үчүн аны колдонууну уланта алат. Буга чейин мен муну кыйыттым MySQL үчүн Percona Server жөнөкөй стол мейкиндигинин ачкычын кайра шифрлөө эмес, чыныгы таблица мейкиндигин кайра шифрлөөнү аткара алат. Бул өзгөчөлүк шифрлөө жиптери деп аталат. Бирок, бул функция учурда дагы эле эксперименталдык.

Башкы ачкычты айландыруу башкы ачкыч уурдалганда пайдалуу, бирок чабуулчу аны колдонууга жана стол мейкиндигинин ачкычтарын чечмелей албайт.

Акысыз демо сабакка жазылыңыз.

Кененирээк:

Source: www.habr.com