Деректер қауіпсіздігінің тетіктері

Платформа бойынша деректерді қорғайтын бірыңғай аутентификация мен авторизация, деректерді шифрлау мен хештеу, сондай-ақ аудит пен мониторинг ішкі жүйелері.

Аутентификация мен авторизацияның бірыңғай жүйесі

Аутентификация мен авторизацияның бірыңғай жүйесі — деректерді қорғаудың негізгі құрауышы, ол жүйе ресурстарына қауіпсіз қол жеткізуді қамтамасыз етеді. Ол пайдаланушыларды, олардың құқықтарын және деректерге қол жеткізуді жалпы жүйелік деңгейде басқаруға мүмкіндік береді.

Еске салайық:

  • Аутентификация — пайдаланушының жеке басын растау процесі (мысалы, пайдаланушы аты мен құпиясөз арқылы).
  • Авторизация — пайдаланушының белгілі бір әрекеттерді орындауға құқықтарын тексеру процесі (мысалы, деректерге немесе жүйе функцияларына қол жеткізу).

Жүйенің құрауыштары

Аутентификация

  • Логин мен құпиясөз: аутентификацияның дәстүрлі әдісі. Кіру кезінде пайдаланушы алдымен өзін пайдаланушы аты мен құпиясөз арқылы сәйкестендіруі тиіс.
  • Көпфакторлы аутентификация (MFA): бірнеше фактордың қолданылуы (мысалы, веб-API үшін динамикалық түрде жаңарып отыратын бағдарламалық токен).

Токенге негізделген аутентификация тіркелген пайдаланушылар үшін процесті жеңілдетеді. Бастау үшін пайдаланушы серверге пайдаланушы аты мен құпиясөзі бар сұрау жібереді. Сервер оларды өзінің сәйкестендіру дерекқорында тіркелген мәндермен салыстырып тексереді. Жеке бас расталса, сервер аутентификация токенін қайтарады (ол да дерекқорда сақталады).

Кейін сол пайдаланушы қорғалған ресурстарға қол жеткізуді сұрағанда, бұл сұрауларды пайдаланушы аты мен құпиясөздің орнына аутентификация токенімен авторизациялауға болады. Сервер токенді дерекқорда тіркелген токенмен салыстырып, қол жеткізуді береді.

Авторизация

  • Рөлдер мен құқықтар: пайдаланушыларға олардың құқықтарын анықтайтын рөлдер тағайындалады (мысалы, қол жеткізу әкімшісі, пайдаланушы).
  • ACL (Access Control Lists): қандай ресурстарға кімнің қол жеткізе алатынын анықтайтын тізімдер.
  • RBAC (Role-Based Access Control): рөлге негізделген қол жеткізуді басқару.
  • ABAC (Attribute-Based Access Control): атрибутқа негізделген қол жеткізуді басқару (мысалы, тәулік уақыты немесе орналасқан жер бойынша).

Пайдаланушы деректерін сақтау

  • Пайдаланушы дерекқоры: пайдаланушылар, олардың рөлдері мен құқықтары туралы ақпаратты бірыңғай дерекқорда сақтайды.

Қауіпсіздік

  • Шифрлау: деректерді тасымалдау және сақтау кезінде қорғайды.
  • Қол жеткізу токендері: сеансты басқару үшін қолданылатын динамикалық түрде жаңарып отыратын бағдарламалық токендер.
  • Аудит: пайдаланушының барлық әрекеттерін кейінгі талдау үшін журналға жазу.

Жүйенің іске асырылуы

Платформа токенге негізделген аутентификация ағынын пайдаланады. Пайдаланушы логин мен құпиясөз арқылы кіреді, жүйе оларды тексеріп, қол жеткізу токенін қайтарады, содан кейін бұл токен қорғалған ресурстарға қол жеткізуді авторизациялау үшін әрбір кейінгі сұраумен бірге жіберіледі. Логин ретінде пайдаланушының электрондық пошта мекенжайы қолданылады.

Curl форматындағы сұрау мысалы:

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

Жауап ретінде келесі хабарды аламыз:

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"}}

Бұл жауапта бізді access_token параметрі қызықтырады. Осы тақырыптаманың мәні әрбір сұрау үшін құпиясөз ретінде қолданылады және әр сұрау сайын өзгеріп отырады.

Алдыңғы жауаптан алынған токенді пайдаланатын сұрау мысалы:

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

Жауап ретінде келесі хабарды аламыз:

Сеансты аяқтау үшін SignOut процедурасын пайдалануға болады немесе соңғы сұраудан қажетті тақырыптамаларды сақтап, токеннің мерзімі өтпеген болса, оларды келесі жолы қайта қолдануға болады. Сеансты аяқтамаған жағдайда, серверлік жүйе параметрлеріне байланысты соңғы токен біраз уақыт жарамды болып қала беретінін ескеріңіз.

Жүйенің артықшылықтары

Аутентификация мен авторизацияның бірыңғай жүйесі — деректерді қорғау мен қол жеткізуді басқарудың қуатты құралы. Ол келесі артықшылықтарды береді:

  • Орталықтандырылған басқару: пайдаланушылар мен олардың құқықтарын басқаруды жеңілдетеді.
  • Қауіпсіздік: деректерді рұқсатсыз қол жеткізуден қорғайды.
  • Дәйектілік: барлық қосымшалар мен жүйелер бірдей аутентификация мен авторизация тетігін пайдаланады.
  • Масштабталымдылық: жаңа қосымшалар мен пайдаланушыларды оңай қосуға мүмкіндік береді.

Деректерді шифрлау

Маңызды ақпаратты қорғау үшін жүйе шифрлауды (ақпаратты тиісті кілтсіз оқуға болмайтын түрге түрлендіру) және хештеуді (деректерді бірегей, тұрақты ұзындықтағы жолға — хешке түрлендіру) пайдаланады. Бұл — деректерді қорғаудың негізгі тетіктерінің бірі, ол ақпараттың сақталу кезінде де, тасымалдану кезінде де құпиялылығын, тұтастығын және қауіпсіздігін қамтамасыз етеді.

Жүйе деректерді шифрлау мен хештеудің әртүрлі алгоритмдерін пайдаланады.

Жүйеде шифрлауды қолдану

Сақтау кезіндегі шифрлау

  • Дерекқорлар: дерекқордың жекелеген өрістерін шифрлау.
  • Файлдар: файлдарды дискіге сақтамас бұрын шифрлау.

Тасымалданатын деректерді шифрлау

  • HTTPS: деректерді желі арқылы тасымалдау кезінде шифрлау үшін SSL/TLS қолдану.
  • VPN: деректерді тасымалдау үшін қауіпсіз туннель құру.

Құпиясөздерді шифрлау

Құпиясөздердің орнына олардың хештерін сақтау.

Деректерді шифрлау мен дешифрлау мысалдары

Жүйенің конфигурация файлдарын шифрлау мен дешифрлау мысалдарын қарастырайық.

Деректерді шифрлау

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)

Деректерді дешифрлау

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

Деректерді шифрлаудың артықшылықтары

  • Құпиялылық: деректерді рұқсатсыз қол жеткізуден қорғау.
  • Тұтастық: деректердің өзгертілмегеніне кепілдік беру.
  • Түпнұсқалық: деректер көзін растау.
  • Талаптарға сәйкестік: реттеуші талаптарын орындау.

Аудит пен мониторинг

Бірнеше ішкі жүйе пайдаланушы мен жүйенің белсенділігін бақылайды, күмәнді әрекеттерді анықтайды және қауіпсіздік талаптарына сәйкестікті қамтамасыз етеді. Олар жиынтығымен:

  • есеп берушілік пен сәйкестікті қамтамасыз ету үшін пайдаланушы мен жүйенің белсенділігі туралы ақпаратты жинайды, талдайды және сақтайды;
  • инциденттерді анықтап, оларға ден қою үшін жүйе мен жабдықты нақты уақыт режимінде үздіксіз бақылайды.

Мақсаттар

  • Есеп берушілік: пайдаланушы мен жүйенің барлық белсенділігінің тіркелуін қамтамасыз ету.
  • Қауіпсіздік: рұқсатсыз әрекеттерді анықтау және алдын алу.
  • Ақаулықтарды анықтау: аппараттық ақаулықтар мен ауытқуларды анықтап, түзету шараларын қабылдау.
  • Өнімділікті оңтайландыру: жүйе өнімділігін талдау және оңтайландыруды қажет ететін «тар жерлерді» табу.
  • Болжау мен жоспарлау: болашақ жүктемелерді болжау және ресурстарды жоспарлау үшін деректер жинау.
  • Сәйкестік: реттеуші талаптарына сәйкестікті қамтамасыз ету.
  • Инциденттерді талдау: болашақтағы инциденттердің алдын алу үшін орын алған инциденттерді талдау.

Аудит пен мониторингтің құрауыштары

Деректер жинау

  • Журналдар: пайдаланушы мен жүйе әрекеттерінің барлық деңгейдегі жазбалары.
  • Метрикалар: жүйе өнімділігінің деректері (мысалы, процессорды жүктеу, жадты пайдалану).

Деректерді сақтау

  • Журналдарды сақтау: әртүрлі көздерден деректер жинау, журналдар мен метрикаларды тақырыптық бағыт бойынша бөлініп сақтаумен ұйымдастыру.
  • Журналдарды ротациялау: орынды үнемдеу үшін ескі журналдарды автоматты түрде жою.

Деректерді талдау

  • Іздеу мен сүзу: журналдарды әртүрлі өлшемшарттар бойынша іздеу және сүзу мүмкіндігі.
  • Аналитика: деректерді талдау құралдарын пайдалану (мысалы, Zabbix).

Ескертулер

  • Ескертулер: күмәнді әрекеттер мен төтенше жағдайлар туралы хабарландырулар жіберу (мысалы, электрондық пошта немесе Telegram чат арқылы).
  • Автоматты әрекеттер: инциденттерге автоматты түрде ден қою (мысалы, пайдаланушыны бұғаттау).

Іске асыру мысалы

Журналға жазу

Қосымшада журналға жазу үшін кітапхана пайдалану.

Есептегіштерден келетін деректердегі қателерді жинау

Журналдарды сақтау

Журналдар үшін орталықтандырылған сақтауды пайдалану.

audits кестесі

Бұл кестеде деректерді журналға жазу туралы ақпарат сақталады.

ӨрісТүріСипаттама
idintegerЖазбаның бірегей идентификаторы (бастапқы кілт).
auditable_idintegerАудиттелетін нысанға сілтеме (equipment.id, stations.id …).
auditable_typecharacter varyingАудиттелетін нысан (equipment, stations …).
user_idintegerПайдаланушы идентификаторына сілтеме (users.id)
actioncharacter varyingӘрекет
audited_changesjsonbАудиттелген өзгерістер
versionintegerӨзгерістер нұсқасы
remote_addresscharacter varyingҚашықтағы мекенжай
request_uuidcharacter varyingОқиға идентификаторы.
created_attimestamp(6) without time zoneӨзгеріс күні/уақыты.
error_logs кестесі

Бұл кестеде есептегіштерден келетін деректердегі қателер туралы ақпарат сақталады.

ӨрісТүріСипаттама
idintegerЖазбаның бірегей идентификаторы (бастапқы кілт).
loggable_idintegerТіркелген нысанға сілтеме (equipment.id …).
loggable_typecharacter varyingТіркелген нысан (equipment …).
messageintegerҚате идентификаторына сілтеме.
paramsjsonbҚатенің сипаттамалары.
created_attimestamp(6) without time zoneӨзгеріс күні/уақыты.

Журналдарды талдау

Журналдарды талдау үшін пайдаланылатын құралдар:

  • Журналдарды бейнелеу және талдау үшін веб-формаларды баптау.
  • Пайдаланушы белсенділігін бақылау үшін бақылау тақталарын құру.

Ескертулер

Күмәнді әрекеттер үшін бапталған ескертулер:

  • Метрикаларды бақылау үшін Zabbix-те ескертулерді баптау.
  • Дабыл оқиғалары туралы хабарландыруларды электрондық пошта немесе Telegram чат арқылы жіберу.

Аудит пен мониторингтің артықшылықтары

Аудит пен мониторинг — деректерді қорғаудың қуатты құралдары, олар пайдаланушы мен жүйенің белсенділігін қадағалауға, күмәнді әрекеттерді анықтауға және қауіпсіздік талаптарына сәйкестікті қамтамасыз етуге мүмкіндік береді. Олар келесіге мүмкіндік береді:

  • деректердің есеп берушілігі мен қауіпсіздігін қамтамасыз ету;
  • инциденттерді анықтау және алдын алу;
  • реттеуші талаптарын орындау.

Қатысты тақырыптар

Соңғы жаңарту

Бұл бет пайдалы болды ма?