MySQL дэх шифрлэлт: Мастер түлхүүрийн эргэлт

Сургалтын шинэ элсэлт эхлэхийг хүлээж байна "Мэдээллийн сан" бид MySQL дээр шифрлэлтийн тухай цуврал нийтлэлүүдийг үргэлжлүүлэн нийтэлсээр байна.

Энэ цувралын өмнөх нийтлэлд бид ярилцсан мастер түлхүүрийн шифрлэлт хэрхэн ажилладаг. Өнөөдөр өмнө нь олж авсан мэдлэг дээрээ үндэслэн гол түлхүүрүүдийн эргэлтийг харцгаая.

Мастер түлхүүрийг эргүүлэх нь шинэ мастер түлхүүр үүсгэх, хүснэгтийн зайн товчлууруудыг (хүснэгтийн зайн толгой хэсэгт хадгалагддаг) шинэ түлхүүрээр дахин шифрлэх явдал юм.

Шифрлэгдсэн хүснэгтийн орон зайн толгой хэсэг ямар байдгийг эргэн санацгаая.

MySQL дэх шифрлэлт: Мастер түлхүүрийн эргэлт

Өмнөх нийтлэлээс харахад сервер эхлүүлэх үед бүх шифрлэгдсэн хүснэгтүүдийн толгойг уншиж, хамгийн том KEY ID-г санаж байгааг бид мэднэ. Жишээлбэл, хэрэв бид KEY-тэй гурван хүснэгттэй болID = 3 ба түлхүүр бүхий нэг хүснэгтID = 4, тэгвэл хамгийн их түлхүүр ID нь 4 байх болно. Үүнийг KEY ID - MAX KEY ID гэж нэрлэе.

Мастер товчлуурын эргэлт хэрхэн ажилладаг

1. Хэрэглэгч ALTER INNODB MASTER KEY-г гүйцэтгэдэг.

2. Сервер нь UUID болон KEY сервертэй шинэ мастер түлхүүр үүсгэхийн тулд түлхүүрийн рингээс хүсэлт гаргадагID нь нэг нэмэх MAX-тай тэнцүүҮндсэн хэсэгID. Тиймээс бид INNODB-тэй тэнцүү мастер түлхүүрийн ID-г авнаKEY-UUID-(MAXҮндсэн хэсэгID + 1). Мастер түлхүүрийг амжилттай гаргасны дараа MAX KEY ID-г нэгээр нэмэгдүүлнэ (жишээ нь MAX).Үндсэн хэсэгID=MAXҮндсэн хэсэгID + 1).

3. Сервер нь мастер түлхүүрээр шифрлэгдсэн бүх хүснэгтийн зайг сканнердаж, хүснэгтийн орон зай тус бүрээр:

  • tablespace түлхүүрийг шинэ мастер түлхүүрээр шифрлэдэг;

  • түлхүүр ID-г шинэ MAX болгож шинэчилнэҮндсэн хэсэгID;

  • хэрэв UUID серверийн UUID-ээс өөр бол UUID серверийг шинэчилнэ үү.

Бидний мэдэж байгаагаар хүснэгтийн шифрийг тайлахад ашигладаг Мастер Түлхүүр ID нь UUID болон хүснэгтийн толгой хэсгээс уншигдсан KEY ID-ээс бүрдэнэ. Одоо бидний хийж байгаа зүйл бол хүснэгтийн зайны шифрлэлтийн толгой хэсэгт байгаа энэ мэдээллийг шинэчлэх бөгөөд ингэснээр сервер зөв мастер түлхүүрийг хүлээн авах болно.

Хэрэв бидэнд өөр өөр нөөцлөлт гэх мэт өөр өөр байршлаас хүснэгтийн зай байгаа бол тэдгээр нь өөр өөр үндсэн түлхүүрүүдийг ашиглаж болно. Эдгээр бүх мастер түлхүүрүүдийг серверийг эхлүүлэх үед репозитороос татаж авах шаардлагатай болно. Энэ нь ялангуяа сервер талын түлхүүрийн дэлгүүр ашиглаж байгаа тохиолдолд серверийн эхлэлийг удаашруулж болзошгүй юм. Мастер түлхүүрийг эргүүлснээр бид хүснэгтийн зайн түлхүүрүүдийг бүх хүснэгтийн зайд адилхан нэг мастер түлхүүрээр дахин шифрлэдэг. Одоо сервер эхлүүлэх үед зөвхөн нэг мастер түлхүүр хүлээн авах ёстой.

Энэ нь мэдээжийн хэрэг зүгээр л тааламжтай гаж нөлөө юм. Мастер түлхүүрийн эргэлтийн гол зорилго нь манай серверийг илүү аюулгүй болгох явдал юм. Мастер түлхүүрийг ямар нэгэн байдлаар агуулахаас (жишээлбэл, Vault серверээс) хулгайлсан тохиолдолд шинэ мастер түлхүүр үүсгэж, хүснэгтийн зайн түлхүүрүүдийг дахин шифрлэх боломжтой бөгөөд ингэснээр хулгайлагдсан түлхүүр хүчингүй болно. Бид аюулгүй... бараг л.

Өмнөх нийтлэлдээ хүснэгтийн зайн түлхүүр хулгайд алдвал гуравдагч этгээд өгөгдлийн шифрийг тайлахад ашиглаж болох талаар ярьсан. Манай диск рүү нэвтрэх боломж байгаа тохиолдолд. Хэрэв мастер түлхүүр хулгайлагдсан бөгөөд та шифрлэгдсэн өгөгдөлд хандах боломжтой бол та хулгайлагдсан мастер түлхүүрийг ашиглан tablespace түлхүүрийн кодыг тайлж, шифрлэгдсэн өгөгдлийг авах боломжтой. Таны харж байгаагаар мастер түлхүүрийг эргүүлэх нь энэ тохиолдолд тус болохгүй. Бид хүснэгтийн зайн түлхүүрийг шинэ мастер түлхүүрээр дахин шифрлэх боловч өгөгдлийг шифрлэх/шифрлэхэд ашигласан түлхүүр хэвээр байна. Тиймээс "хакер" өгөгдлийг шифрлэхэд үргэлжлүүлэн ашиглах боломжтой. Өмнө нь би үүнийг сануулж байсан MySQL-д зориулсан Percona сервер энгийн хүснэгтийн зайн түлхүүрийг дахин шифрлэхээс гадна жинхэнэ хүснэгтийн зайг дахин шифрлэх боломжтой. Энэ функцийг шифрлэлтийн хэлхээ гэж нэрлэдэг. Гэсэн хэдий ч, энэ функц нь одоогоор туршилтын хэвээр байна.

Мастер түлхүүрийг эргүүлэх нь мастер түлхүүрийг хулгайлсан тохиолдолд ашигтай боловч халдагчид үүнийг ашиглаж, хүснэгтийн зайн түлхүүрүүдийг тайлах арга байхгүй.

Үнэгүй демо хичээлд бүртгүүлнэ үү.

Цааш унших:

Эх сурвалж: www.habr.com