Maʼlumotlarni himoyalash mexanizmlari

Yagona autentifikatsiya va avtorizatsiya, maʼlumotlarni shifrlash va xeshlash, hamda platforma boʻylab maʼlumotlarni himoya qiluvchi audit va monitoring quyi tizimlari.

Yagona autentifikatsiya va avtorizatsiya tizimi

Yagona autentifikatsiya va avtorizatsiya tizimi maʼlumotlarni himoyalashning asosiy tarkibiy qismi boʻlib, tizim resurslariga xavfsiz kirishni taʼminlaydi. U foydalanuvchilarni, ularning huquqlarini va maʼlumotlarga kirishni butun tizim darajasida boshqarish imkonini beradi.

Eslatma:

  • Autentifikatsiya — bu foydalanuvchining shaxsini tasdiqlash jarayoni (masalan, login va parol orqali).
  • Avtorizatsiya — bu foydalanuvchining maʼlum amallarni bajarishga boʻlgan huquqlarini tekshirish jarayoni (masalan, maʼlumotlarga yoki tizim funksiyalariga kirish).

Tizim tarkibiy qismlari

Autentifikatsiya

  • Login va parol: autentifikatsiyaning anʼanaviy usuli. Kirishda foydalanuvchi avval login va parol bilan oʻzini taniqlashi kerak.
  • Koʻp omilli autentifikatsiya (MFA): bir nechta omilni qoʻllash (masalan, veb-API uchun dinamik yangilanadigan dasturiy token).

Tokenga asoslangan autentifikatsiya roʻyxatdan oʻtgan foydalanuvchilar uchun jarayonni soddalashtiradi. Boshlash uchun foydalanuvchi serverga login va parol bilan soʻrov yuboradi. Server ularni oʻzining identifikatsiya bazasida roʻyxatdan oʻtgan qiymatlar bilan solishtirib tekshiradi. Agar shaxs tasdiqlansa, server autentifikatsiya tokenini qaytaradi (u ham bazada saqlanadi).

Keyinchalik oʻsha foydalanuvchi himoyalangan resurslarga kirishni soʻraganida, bu soʻrovlar login va parol oʻrniga autentifikatsiya tokeni bilan avtorizatsiya qilinishi mumkin. Server tokenni bazada roʻyxatdan oʻtgani bilan solishtirib tekshiradi va kirishga ruxsat beradi.

Avtorizatsiya

  • Rollar va huquqlar: foydalanuvchilarga ularning huquqlarini belgilovchi rollar (masalan, kirish administratori, foydalanuvchi) tayinlanadi.
  • ACL (Access Control Lists): qaysi resurslarga kim kirish huquqiga ega ekanligini belgilovchi roʻyxatlar.
  • RBAC (Role-Based Access Control): rollarga asoslangan kirish boshqaruvi.
  • ABAC (Attribute-Based Access Control): atributlarga asoslangan kirish boshqaruvi (masalan, kun vaqti yoki joylashuv boʻyicha).

Foydalanuvchi maʼlumotlarini saqlash

  • Foydalanuvchilar bazasi: foydalanuvchilar, ularning rollari va huquqlari haqidagi maʼlumotni yagona bazada saqlaydi.

Xavfsizlik

  • Shifrlash: maʼlumotlarni uzatish va saqlash davomida himoya qiladi.
  • Kirish tokenlari: sessiyani boshqarish uchun ishlatiladigan dinamik yangilanadigan dasturiy tokenlar.
  • Audit: keyinchalik tahlil qilish uchun barcha foydalanuvchi amallarini jurnalga yozish.

Tizimni amalga oshirish

Platforma tokenga asoslangan autentifikatsiya jarayonidan foydalanadi. Foydalanuvchi login va parol bilan tizimga kiradi, tizim ularni tekshiradi va kirish tokenini qaytaradi, soʻngra bu token himoyalangan resurslarga kirishni avtorizatsiya qilish uchun har bir keyingi soʻrov bilan birga yuboriladi. Login sifatida foydalanuvchining elektron pochta manzili ishlatiladi.

Curl formatidagi soʻrov misoli:

Request example
curl -i --header "Content-Type: application/json" \
--request POST \
--data '{"email":"api@local.net","password":"Str0ngPas$"}'\
https://server123/api/v1/auth/sign_in

Javob sifatida quyidagi xabarni olamiz:

Response example
HTTP/1.1 200 OK
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block X-Content-Type-Options: nosniff X-Download-Options: noopen X-Permitted-Cross-Domain-Policies: none Referrer-Policy: strict-origin-when-cross-origin Content-Type: application/json; charset=utf-8 access-token: tgervk9_9xicJYpmSsnnNA
token-type: Bearer
client: D-Uv3ER53873olhnNLjL9w
expiry: 1615227012
uid: api@local.net
ETag: W/"5b9bcc76f7223b72b79d9f2d31ff0fd5"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: c18e06b4-e5bd-40b5-875d-7ac958e2fbb5
X-Runtime: 0.391069
Transfer-Encoding: chunked
{"data":{"id":6,"email":"api@local.
net","provider":"email","uid":"api@local.net","name":"API user"}}

Bu javobda bizni access_token parametri qiziqtiradi. Ushbu sarlavhaning qiymati har bir soʻrov uchun parol sifatida ishlatiladi va har bir soʻrovda oʻzgaradi.

Quyida oldingi javobdan olingan tokendan foydalanadigan soʻrov misoli keltirilgan:

Request example with token
curl -i --header "access-token: tgervk9_9xicJYpmSsnnNA" \
--header "token-type: Bearer" \
--header "client: D-Uv3ER53873olhnNLjL9w" \
--header "uid: api@local.net" \
--request GET \
--header "Content-Type: application/json" \
--data '{"page":"2"}' \
https://server123/api/v1/stations

Javob sifatida quyidagi xabarni olamiz:

Sessiyani tugatish uchun SignOut protsedurasidan foydalanishingiz yoki oxirgi soʻrovdan zarur sarlavhalarni saqlab, token amal qilish muddati tugamagan boʻlsa, keyingi safar ularni qayta ishlatishingiz mumkin. Shuni eʼtiborga oling: sessiyani tugatmasdan turib, oxirgi token serverning tizim sozlamalariga qarab maʼlum vaqt davomida amal qiladi.

Tizimning afzalliklari

Yagona autentifikatsiya va avtorizatsiya tizimi maʼlumotlarni himoyalash va kirishni boshqarishning kuchli vositasidir. U quyidagi afzalliklarni taʼminlaydi:

  • Markazlashtirilgan boshqaruv: foydalanuvchilar va ularning huquqlarini boshqarishni soddalashtiradi.
  • Xavfsizlik: maʼlumotlarni ruxsatsiz kirishdan himoya qiladi.
  • Izchillik: barcha ilovalar va tizimlar bir xil autentifikatsiya va avtorizatsiya mexanizmidan foydalanadi.
  • Kengaytiriluvchanlik: yangi ilovalar va foydalanuvchilarni qoʻshishni osonlashtiradi.

Maʼlumotlarni shifrlash

Muhim axborotni himoyalash uchun tizim shifrlash (axborotni tegishli kalitsiz oʻqib boʻlmaydigan shaklga oʻtkazish) va xeshlash (maʼlumotlarni oʻzgarmas uzunlikdagi noyob satrga — xeshga — oʻtkazish) usullaridan foydalanadi. Bu maʼlumotlarni himoyalashning asosiy mexanizmlaridan biri boʻlib, axborotning maxfiyligi, yaxlitligi va xavfsizligini ham saqlashda, ham uzatishda taʼminlaydi.

Tizim maʼlumotlarni shifrlash va xeshlashning turli algoritmlaridan foydalanadi.

Shifrlashni tizimda qoʻllash

Saqlashda shifrlash

  • Maʼlumotlar bazalari: maʼlumotlar bazasining alohida maydonlarini shifrlash.
  • Fayllar: fayllarni diskka saqlashdan oldin shifrlash.

Uzatishdagi maʼlumotlarni shifrlash

  • HTTPS: maʼlumotlarni tarmoq orqali uzatish davomida shifrlash uchun SSL/TLS dan foydalanish.
  • VPN: maʼlumotlarni uzatish uchun xavfsiz tunnel yaratish.

Parolni shifrlash

Parollar oʻrniga parol xeshlarini saqlash.

Maʼlumotlarni shifrlash va deshifrlash misollari

Tizim konfiguratsiya fayllarini shifrlash va deshifrlash misollarini koʻrib chiqaylik.

Maʼlumotlarni shifrlash

example.config
mkdir_p(encrypted_dir_path)
encrypted = Rails.application.encrypted(encrypted_file_path, key_path: 'config/system.key')
encrypted.write(File.read(decrypted_file_path))
File.delete(decrypted_file_path)

Maʼlumotlarni deshifrlash

example.config
mkdir_p(decrypted_dir_path)
File.write(decrypted_file_path,
  Rails.application.encrypted(encrypted_file_path, key_path: 'config/system.key').read
)

Maʼlumotlarni shifrlashning afzalliklari

  • Maxfiylik: maʼlumotlarni ruxsatsiz kirishdan himoyalash.
  • Yaxlitlik: maʼlumotlar oʻzgartirilmaganligini taʼminlash.
  • Asllik: maʼlumotlar manbasini tasdiqlash.
  • Muvofiqlik talablari: meʼyoriy talablarga rioya qilish.

Audit va monitoring

Bir nechta quyi tizim foydalanuvchi va tizim faolligini kuzatadi, shubhali xatti-harakatlarni aniqlaydi hamda xavfsizlik talablariga muvofiqlikni taʼminlaydi. Ular birgalikda:

  • hisobdorlik va muvofiqlikni taʼminlash uchun foydalanuvchi va tizim faolligi haqidagi maʼlumotni yigʻadi, tahlil qiladi va saqlaydi;
  • hodisalarni aniqlash va ularga javob qaytarish uchun tizim va jihozlarni real vaqt rejimida uzluksiz kuzatadi.

Maqsadlar

  • Hisobdorlik: barcha foydalanuvchi va tizim faolligi qayd etilishini taʼminlash.
  • Xavfsizlik: ruxsatsiz faollikni aniqlash va oldini olish.
  • Muammolarni aniqlash: jihozlardagi muammolar va anomaliyalarni aniqlash hamda tuzatuvchi choralar koʻrish.
  • Unumdorlikni optimallashtirish: tizim unumdorligini tahlil qilish va optimallashtirishni talab qiluvchi tor joylarni topish.
  • Bashorat va rejalashtirish: kelajakdagi yuklamalarni bashorat qilish va resurslarni rejalashtirish uchun maʼlumot yigʻish.
  • Muvofiqlik: meʼyoriy talablarga rioya qilinishini taʼminlash.
  • Hodisalar tahlili: yuz bergan hodisalarni kelajakdagilarning oldini olish maqsadida tahlil qilish.

Audit va monitoring tarkibiy qismlari

Maʼlumot yigʻish

  • Jurnallar: barcha darajadagi foydalanuvchi va tizim amallarining yozuvlari.
  • Metrikalar: tizim unumdorligi haqidagi maʼlumotlar (masalan, CPU yuklanishi, xotira sarfi).

Maʼlumotlarni saqlash

  • Jurnallarni saqlash: turli manbalardan maʼlumot yigʻish, jurnallar va metrikalarni mavzu sohalari boʻyicha tashkil etilgan taqsimlangan saqlash bilan.
  • Jurnallarni rotatsiyalash: joyni tejash uchun eski jurnallarni avtomatik oʻchirish.

Maʼlumotlarni tahlil qilish

  • Qidiruv va filtrlash: jurnallarni turli mezonlar boʻyicha qidirish va filtrlash imkoniyati.
  • Analitika: maʼlumotlarni tahlil qilish vositalaridan foydalanish (masalan, Zabbix).

Ogohlantirishlar

  • Ogohlantirishlar: shubhali faollik va favqulodda vaziyatlar haqida bildirishnomalar yuborish (masalan, elektron pochta yoki Telegram chati orqali).
  • Avtomatik amallar: hodisalarga avtomatik javob qaytarish (masalan, foydalanuvchini bloklash).

Amalga oshirish misoli

Jurnalga yozish

Ilovada jurnalga yozish uchun kutubxonadan foydalanish.

Hisoblagichlardan kelgan maʼlumotlardagi xatolarni yigʻish

Jurnallarni saqlash

Jurnallar uchun markazlashtirilgan saqlovdan foydalanish.

audits jadvali

Bu jadval maʼlumotlarni jurnalga yozish haqidagi axborotni saqlaydi.

MaydonTurTavsif
idintegerYozuvning noyob identifikatori (asosiy kalit).
auditable_idintegerAudit qilingan obyektga havola (equipment.id, stations.id …).
auditable_typecharacter varyingAudit qilinadigan obyekt (equipment, stations …).
user_idintegerFoydalanuvchi identifikatoriga havola (users.id)
actioncharacter varyingAmal
audited_changesjsonbAudit qilingan oʻzgarishlar
versionintegerOʻzgarishlar versiyasi
remote_addresscharacter varyingMasofaviy manzil
request_uuidcharacter varyingHodisaning identifikatori.
created_attimestamp(6) without time zoneOʻzgarish sanasi/vaqti.
error_logs jadvali

Bu jadval hisoblagichlardan kelayotgan maʼlumotlardagi xatolar haqidagi axborotni saqlaydi.

MaydonTurTavsif
idintegerYozuvning noyob identifikatori (asosiy kalit).
loggable_idintegerRoʻyxatdan oʻtgan obyektga havola (equipment.id …).
loggable_typecharacter varyingRoʻyxatdan oʻtgan obyekt (equipment …).
messageintegerXato identifikatoriga havola.
paramsjsonbXato xususiyatlari.
created_attimestamp(6) without time zoneOʻzgarish sanasi/vaqti.

Jurnallarni tahlil qilish

Jurnallarni tahlil qilish uchun ishlatiladigan vositalar:

  • Jurnallarni vizuallashtirish va tahlil qilish uchun veb-shakllarni sozlash.
  • Foydalanuvchi faolligini kuzatish uchun boshqaruv panellarini yaratish.

Ogohlantirishlar

Shubhali faollik uchun moslashtirilgan ogohlantirishlar:

  • Metrikalarni kuzatish uchun Zabbix da ogohlantirishlarni sozlash.
  • Trevoga hodisalari uchun elektron pochta yoki Telegram chati orqali bildirishnomalar yuborish.

Audit va monitoringning afzalliklari

Audit va monitoring maʼlumotlarni himoyalashning kuchli vositalari boʻlib, foydalanuvchi va tizim faolligini kuzatish, shubhali xatti-harakatlarni aniqlash hamda xavfsizlik talablariga muvofiqlikni taʼminlash imkonini beradi. Ular quyidagilarga imkon beradi:

  • maʼlumotlar hisobdorligi va xavfsizligini taʼminlash;
  • hodisalarni aniqlash va oldini olish;
  • meʼyoriy talablarga rioya qilish.

Aloqador mavzular

Oxirgi yangilanish

Ushbu sahifa foydali boʻldimi?