MongoDB CSFLE qo‘llanilishi

MongoDB CSFLE qo‘llanilishi

1. Texnologiya tanlash tarzi

Tizim ichida shaxsiy ma'lumotlar himoyasi talablarining kuchayishi bilan ma'lumotlarni shifrlash muhim vazifaga aylandi. Ayniqsa, ism, telefon raqami, elektron pochta kabi shaxsiy ma'lumotlar saqlanishda shifrlanishi kerak edi va ish muhitida ham xavfsiz ravishda boshqarilishi shart edi. Dastlab, ma'lumotlar bazasining o'z shifrlash funksiyasini faqat qo'llash variantlari ko'rib chiqilgan, lekin quyidagi sabablar tufayli ilova to'g'ridan-to'g'ri shifrlash va shifrlashni amalga oshirish tuzilmasini ko'rib chiqishga olib keldi.

Bor.Ma'lumotlar bazasida faqat shifrlash amalga oshirilganda, ilova tashqarisida ma'lumotlarga kirish huquqiga ega bo'lgan foydalanuvchiOmmaviy ma'lumotlarni ko'rish imkoniyatiBu mavjud

Men. Mijozlar xavfsizligi bo'yicha qo'llanmama'lumotlar bazasining ichida emas, shifrlash va ochish kerakilova darajasida ishlov berish tavsiya etiladi

Maqsadli tizimda MongoDB Atlas ishlatilgan va MongoDB tomonidan rasmiy ravishda taqdim etilgan CSFLE (Mijoz Tomonidan Maydon Darajasidagi Shifrlash) funksiyasidan foydalanish mumkin.

Qayd etish joizki, CSFLE kutubxona orqali mijoz darajasida ma'lumotlarni shifrlash va keyinchalik DBga saqlab qo'yish, tekshirish vaqtida avtomatik ravishda dekodlash funksiyasidir.

Ba'zi sohalarda tanlangan shifrlashni qo'llash mumkin, ayniqsa RDBdan foydalaniladigan ishchi muhitda talab qilinadigan ustunlarga minimal shifrlashni qo'llash bilan bir xil tarzda MongoDBda ham qo'llaniladi. Barcha ma'lumotlarni shifrlash holatida qidirish va ish faoliyati samaradorligi sezilarli darajada pasayishi mumkin, CSFLE esa zarur bo'lgan maydonlar shifrlanishiga imkon berishi sababli optimallashtirilishi mumkin.

Shifrlash kalitlarini boshqarish usuli ham xavfsizlik nuqtai nazaridan muhim hisobga olinishi kerak.

Agar shifrlash kalitini ilovaning ichki sozlama faylida saqlasangiz, xavfsizlik nuqtai nazaridan xavf mavjud, shuning uchun alohida KMS (Kalitni Boshqarish Xizmati)ni qo'llash imkoniyati ko'rib chiqildi.

Ushbu tizim AWS muhitida ishlayotganligi sababli AWS KMSni foydalanishga qaror qilindi. AWS KMS kalitlarni yaratish, kirish nazorati, avtomatik yangilanish funksiyalari kabi imkoniyatlarni taqdim etadi va xavfsizlikni boshqarish jihatidan barqarorlikni ta'minlaydi.

Qo'shimcha ravishda MongoDB tomonidan taqdim etilgan Queryable Encryption funksiyasini ham ko'rib chiqdik. Queryable Encryption shifrlangan ma'lumotlar ustida ayrim qidiruv funksiyalarini taqdim etish afzalliklariga ega bo'lsa-da, shifrlangan qidiruv uchun qo'shimcha kolleksiyalar yaratilishi va boshqaruv tuzilmasining murakkablashishi muammosi mavjud edi.

Xususan, ishlash muhitida DB kolleksiyalarining soni ortishi va boshqarish murakkabligi kutilyapti, haqiqiy loyihada esa ish qulayligi va texnik xizmat ko'rsatish samaradorligini yanada muhim deb hisobladik.

Natijada, ushbu loyiha CSFLE + AWS KMS kombinatsiyasitanlashga qaror qildik.

2. Mahalliy muhitni qo'llash jarayoni

CSFLE qo‘llanilishi birinchi navbatda mahalliy rivojlantirish muhitida tekshirilgan usulda amalga oshirildi.

MongoDB Java uchun CSFLE namuna loyihasini taqdim etdi va biz bunda asosiy ishlarni birinchi navbatda tasdiqladik.

Namuna kodda mahalliy muhit uchun master kalit (CMK) funksiyasi ham taqdim etilganligi sababli dastlabki sinovlar o'tkazish uchun mos edi.Dastlabki bosqichda quyidagi jihatlarni birinchi navbatda tasdiqladik.

- Maxsus maydonlarni shifrlash holati

- Saqlashda avtomatik shifrlash harakati

- Ko'rish jarayonida avtomatik deşifrlash harakati

- Shifrlash uchun maydonni belgilash usuli

- Ma'lumotlar kalitini (DEK) yaratish usuli

- Masterkey (CMK) ulanish usuli

CSFLE ma'lumotlarni saqlash uchun shifrlash sozlamalari qo'llanilgan mijoz orqali avtomatik ravishda shifrlashni amalga oshiradi. Dasturchilar alohida shifre va de-shifre qilish mantiqini yozishlari shart emas, buning uchun dasturlash osonlashadi.

Masalan, ism (name) maydonida shifrlash sozlamalarini qo'llaganingizdan so'ng, ma'lumotlar haqiqiy MongoDB ichida binar ko'rinishdagi shifrlangan ma'lumotlar sifatida saqlanadi. Aksincha, bir xil mijoz orqali ma'lumotlarni qidirganda, avtomatik ravishda dekodlash amalga oshiriladi va dasturda oddiy matn ma'lumotlari sifatida foydalanishingiz mumkin.

Boshlang'ich sinov jarayonida Entity tuzilishi va shifrlash sxemasi aniqlash usuli ham ko'rib chiqildi. MongoDB CSFLE da JSON Schema asosida shifrlash maydonlarini belgilash mumkin, ya'ni ma'lum maydon uchun deterministic yoki random shifrlash usulini tanlash mumkin.

Deterministik shifrlash doimiy kirish qiymati har doim bir xil shifrlangan matn bilan saqlanadi, shuning uchun tenglik qidiruvi mumkinligini ta'minlaydi, ammo aksincha tasodifiy shifrlash xavfsizlik darajasi yuqori, lekin bir xil qiymatlarni solishtirish qiyin.

Loyihada shaxsiy ma'lumotlarni himoya qilish darajasi va qidiruv talablarini inobatga olish kerak.Ba'zi maydonlar uchun qidiruv zarur bo'lib, deterministik shifrlash qo'llaniladiva, Qolgan maydonlar uchun random shifrlashamalga oshirish usuli sifatida ishlab chiqilgan.

Mahalliy muhit testlari orqali asosiy shifrlash va ochish harakatlari hamda ma'lumotlarni saqlash oqimini barqaror ravishda sinab ko'rish mumkin edi.

3. Bulut muhitida va AWS KMS qo'llanilishi

Mahalliy muhit tasdiqlanganidan so'ng MongoDB Atlas asosidagi bulutli muhitda haqiqiy qo'llash amalga oshirildi.

Bulutli muhitda AWS KMS haqiqiy operatsion muhitga o'xshash tarzdaRivojlanish sohasida KMS sifatida ishlatish uchun sozlanganAWS KMS ni qo'llash uchun IAM ruxsatlarini sozlash, KMS kalitini yaratish, kirish siyosatini tuzish kabi amallar kerak.

Xususan, ilova serverining KMS ga kirish imkoniyatini ta'minlash uchun to'g'ri IAM rolini sozlash muhimdir. Agar ruxsatlar noto'g'ri o'rnatilsa, shifrlash kalitini olish muvaffaqiyatsiz bo'lishi sababli ilova o'zida normal ishlamasligi mumkin.

Mahalliy muhitda mahalliy master kalitini (CMK) ishlatganligi sababli, ishga tushirish muhitiga o'tish jarayonida kalitlarni o'zgartirish zarur edi.

Ushbu jarayonda MongoDB CSFLE kutubxonasida taqdim etilgan Rewrap funksiyasidan foydalandik. Rewrap mavjud ma'lumot kalitini (DEK) yangi master kalitiga (CMK) qayta shifrlash funksiyasidir. Ya'ni, haqiqiy ma'lumotlarni yana shifrlamasdan, faqat ma'lumot shifrlash kalitini (DEK) himoya qiluvchi yuqori master kalitni o'zgartirish strukturasidir.

Loyihada mahalliy master kalitga asoslangan DEKni AWS KMS asosida master kalit bilan qayta o'rnatishBuning orqali ishga tushirish muhitini o'tkazdik. Qayta o'rnatish jarayonida quyidagi jihatlarga diqqat qaratdik.

- Mavjud ma'lumotlarni to'g'ri dekodlash holati

- Yangi saqlangan ma'lumotlarning shifrlanishi holati

- AWS KMS ga kirish normal holatimi

- Mavjud DEK ni qayta ishlatish mumkinmi

- Aqshol uchraganida qaytish imkoniyati

Yaxshiyamki, Rewrapdan so'ng mavjud ma'lumotlar normal tarzda ko'rindi va yangi ma'lumotlar ham AWS KMS asosida ishonchli tarzda shifrlanishi tasdiqlangan.

Ishlab chiqarish muhitida xavfsizlik siyosati asosida KMS kalitini avtomatik yangilash siyosatibirga qo'llaniladi. AWS KMS ma'lum bir davrda avtomatik aylanish (Rotation) qo'llab-quvvatlaydi, shuning uchun kalitlarni boshqarish samaradorligi jihatidan katta afzallikka ega. Ushbu davr1 yilga belgilanganbo'ldi.

4. Boshqaruv jarayonida aniqlangan asosiy muammolar

CSFLE ni amaldagi muhitda qo'llash jarayonida turli qiyinchiliklar va ekspluatatsiya muammolarini boshdan kechirish imkoniyatiga ega bo'ldik. Birinchisi, CSFLE kutubxonasi tarqatish usuliMuammo.

MongoDB Enterprise uchun CSFLE kutubxonasi DBga ulanish mijozidan alohida, operatsion tizimga qarab bajariladigan бинар файл ko'rinishida taqdim etiladi, bu esa fayl o'lchamini ancha katta qiladi. Linux muhiti uchun o'nlab MB atrofida, Windows muhiti uchun esa yuzlab MB atrofida bo'lgan.

Dastlabida, Git Repository ichida joylashtirish variantini ham ko'rib chiqdik, lekin ikkilamchi fayllarni boshqarish samaradorligi va Repository hajmining ortishi masalalari tufayli bu muvofiq emas deb qabul qilindi. Natijada, Nexus Repository orqali tarqatish yoki Docker tasviri ichida joylashtirish usuli tavsiya etildi va ushbu loyiha daDocker tasviri ichida joylashtirishMen ko'rsatilgan yo'nalishda harakat qildim.

Ikkinchisi Spring Boot versiyasining mosligiMuammo borki.

CSFLE kutubxonasi MongoDB Enterprise versiyasiga qarab ichki ishlash usuli biroz farq qiladi va bir xil katta versiyada ham Spring Boot bilan moslik muammolari yuzaga kelishi mumkin.

Xususan, past versiyadagi Spring Boot da MongoDB Driver to'qnashuvi yoki Bean boshlash xatoliklari paydo bo'lgan holatlar mavjud. Alohida qo'llanma hujjati yo'q, shuning uchun hozirda ishlatilayotgan Spring Boot versiyasiga mos ravishda CSFLE kutubxonasi versiyalarini bir vaqtning o'zida tasdiqladikbuni amalga oshirdik.

Natijada, juda past Spring Boot versiyasidan qochish va MongoDB Driver hamda CSFLE kutubxonasi bilan yetarlicha mos keladigan versiyalarni ishlatish muhimligini tasdiqlash mumkin edi.

Uchinchisi esa KMS master kalitini (CMK) yangilash Bu muammo.

AWS KMS asosan avtomatik kalit aylanish funksiyasini taqdim etadi qilish.

Biroq, mavjud kalit ham ma'lum bir vaqt davomida saqlanishi mumkin, shuning uchun mavjud DEK darhol muammolarni keltirib chiqarmaydi. Shunga qaramay, xavfsizlik nuqtai nazaridan yangi yangilangan CMK asosida DEKni yana Rewrap qilish tavsiya etiladi.

Loyihada aslida Mahalliy master kalitidan AWS KMS master kalitiga Rewrap qilish testiamal qilindi va me'yoriy faoliyatni tasdiqlash mumkin edi.

buning orqali kelajakda kalit almashtirish va xavfsizlik siyosatini o'zgartirishda barqaror ishlashga ishonch hosil qilish mumkin edi.

5. Ma'lumotlarni ko'chirish va LIKE qidiruvi bilan bog'liq masalalar

Ma'lumotlarni ko'chirish jarayonida kutmagan muammolar yuzaga keldi.

Mahalliy muhitda shifrlash va shifrlashni yechish uchun mijoz orqali ochiq matnli ma'lumotlarni so'rash normal ishladi, ammo MongoDB Atlas muhitida ba'zi ochiq matnli ma'lumotlarni so'raganda xatolik yuzaga keldi.

Natijada, tarqatish muhitida bulutli muhitda Ko'p ma'lumot manbalari tuzilmasiberildi. Biri Oddiy MongoDB mijozini ko'rish uchunboshqa biri edi CSFLE ga qo'llanilgan shifrlash va ochish uchun maxsus mijoz.

Migatsiya jarayonida mavjud oddiy ma'lumotlarni umumiy mijoz orqali ko'rib chiqqach, ularni shifrlash va deshifrlash uchun mijozi orqali qayta saqlash usuli qo'llanildi.

Ushbu jarayonda CSFLE avtomatik shifrlashni amalga oshirganligi sababli alohida shifrlash lojiğini bevosita yozish zarurati yo'q edi.

Boshqa asosiy muammo LIKE qidiruv muammosiedim.

Shifrlash maqsadli ma'lumotlar ichida ism kabi shaxsiy ma'lumotlar mavjud edi, foydalanuvchi qidiruv funktsiyasida qisman qidiruv talabları mavjud edi.

Moliyaviy soha tizimlarida koreys ismlarini qidirish uchun kalit so'zga asoslangan hash qidirish usuliodatlardan foydalanilgan holatlarda. Masalan, ismni bosh belgilari yoki ba'zi satr birliklari bo'yicha ajratib, hash qiymatini saqlash va qidirish paytida ham bir xil usulda hash o'tkazish tuzilmasidir.

muammo inglizcha ismlari edi. Inglizcha ismlar bo'yicha qism qidiruv imkoniyatlari ancha ko'payganligi sababli, qulay qidiruv uchun kamida 16 ta kalit so'z yaratish zarur edi.

Xushbuda MongoDB massiv asosidagi qidiruv funksiyasini taqdim etadishunday bo'lganligi uchunkalit so'z xesh massiv maydonini qo'shishbuni amalga oshirish usuli bilan hal qilindi. Ya'ni, nom maydoni o'zini shifrlash bilan birga, qidiruv kalit so'zlari xesh massivi alohida saqlanadi va qisman qidirish funksiyasini qo'llab-quvvatlash uchun mo'ljallangan.

Agar Muniq aloqa ma'lumotlar bazasi (RDB) foydalanayotgan bo'lsangiz, alohida Kalit so'zlar uchun xesh jadvaliqilish usuli zarur bo'lardi.

Ushbu loyiha doirasida ma'lumotlarni shifrlash nafaqat saqlash paytida shifrlashni hisobga olish, balki qidirish, ishlash, migratsiya va kalitlarni boshqarish kabi barcha yo'nalishlarni qamrab olgan kompleks dizayn talab etishini yana bir bor tasdiqladik.

Daniel(K)

Site footer