Mehanizmi bezbednosti podataka

Jedinstvena autentifikacija i autorizacija, šifrovanje i heširanje podataka, kao i komponente za reviziju i praćenje koje štite podatke u celoj platformi.

Jedinstveni sistem autentifikacije i autorizacije

Jedinstveni sistem autentifikacije i autorizacije ključna je komponenta zaštite podataka koja obezbeđuje bezbedan pristup resursima sistema. Omogućava vam da upravljate korisnicima, njihovim dozvolama i pristupom podacima na nivou celog sistema.

Podsetnik:

  • Autentifikacija je postupak provere identiteta korisnika (na primer, pomoću korisničkog imena i lozinke).
  • Autorizacija je postupak provere dozvola korisnika za izvršavanje određenih radnji (na primer, za pristup podacima ili funkcijama sistema).

Komponente sistema

Autentifikacija

  • Korisničko ime i lozinka: tradicionalni način autentifikacije. Pri prijavi korisnik najpre mora da se identifikuje korisničkim imenom i lozinkom.
  • Višefaktorska autentifikacija (MFA): korišćenje više faktora (na primer, dinamički ažuriranog softverskog tokena za veb API).

Autentifikacija zasnovana na tokenima pojednostavljuje postupak za postojeće korisnike. Na početku korisnik šalje serveru zahtev sa korisničkim imenom i lozinkom. Server ih proverava prema vrednostima registrovanim u svojoj bazi identiteta. Ako je identitet potvrđen, server vraća token za autentifikaciju (koji se takođe čuva u bazi podataka).

Kada isti korisnik kasnije zatraži pristup zaštićenim resursima, takvi zahtevi mogu da se autorizuju tokenom za autentifikaciju umesto korisničkim imenom i lozinkom. Server upoređuje token sa onim koji je registrovan u bazi podataka i odobrava pristup.

Autorizacija

  • Uloge i dozvole: korisnicima se dodeljuju uloge (na primer, administrator pristupa, korisnik) koje određuju njihove dozvole.
  • ACL (Access Control Lists): liste kontrole pristupa koje određuju ko ima pristup kojim resursima.
  • RBAC (Role-Based Access Control): kontrola pristupa zasnovana na ulogama.
  • ABAC (Attribute-Based Access Control): kontrola pristupa zasnovana na atributima (na primer, prema dobu dana ili lokaciji).

Skladištenje podataka o korisnicima

  • Baza korisnika: čuva podatke o korisnicima, njihovim ulogama i dozvolama u jedinstvenoj bazi podataka.

Bezbednost

  • Šifrovanje: štiti podatke tokom prenosa i skladištenja.
  • Pristupni tokeni: softverski tokeni koji se dinamički ažuriraju i koriste za upravljanje sesijama.
  • Revizija: evidentiranje svih radnji korisnika radi kasnije analize.

Implementacija sistema

Platforma koristi postupak autentifikacije zasnovan na tokenima. Korisnik se prijavljuje korisničkim imenom i lozinkom, sistem ih proverava i vraća pristupni token, a taj token se zatim šalje uz svaki sledeći zahtev radi autorizacije pristupa zaštićenim resursima. Kao korisničko ime koristi se imejl adresa korisnika.

Primer zahteva u formatu Curl:

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

Kao odgovor stiže sledeća poruka:

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: EXAMPLE-ACCESS-TOKEN-1
token-type: Bearer
client: EXAMPLE-CLIENT-ID
expiry: 1615227012
uid: api-user@example.com
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-user@example.com","name":"API user"}}

U ovom odgovoru zanima nas parametar access_token. Vrednost ovog zaglavlja koristi se kao lozinka za svaki zahtev i menja se sa svakim zahtevom.

Sledi primer zahteva koji koristi token iz prethodnog odgovora:

Request example with token
curl -i --header "access-token: EXAMPLE-ACCESS-TOKEN-1" \
--header "token-type: Bearer" \
--header "client: EXAMPLE-CLIENT-ID" \
--header "uid: api-user@example.com" \
--request GET \
--header "Content-Type: application/json" \
--data '{"page":"2"}' \
https://server123/api/v1/stations

Kao odgovor stiže sledeća poruka:

Sesiju možete da završite procedurom SignOut ili da sačuvate potrebna zaglavlja iz poslednjeg zahteva i da ih ponovo upotrebite sledeći put, ako token još nije istekao. Imajte u vidu da poslednji token, ako sesija nije završena, ostaje važeći još neko vreme, u zavisnosti od sistemskih podešavanja servera.

Prednosti sistema

Jedinstveni sistem autentifikacije i autorizacije moćan je alat za zaštitu podataka i kontrolu pristupa. Donosi sledeće prednosti:

  • Centralizovano upravljanje: pojednostavljuje upravljanje korisnicima i njihovim dozvolama.
  • Bezbednost: štiti podatke od neovlašćenog pristupa.
  • Doslednost: sve aplikacije i sistemi koriste isti mehanizam autentifikacije i autorizacije.
  • Skalabilnost: olakšava dodavanje novih aplikacija i korisnika.

Šifrovanje podataka

Da bi zaštitio kritične informacije, sistem koristi šifrovanje (pretvaranje informacija u oblik koji ne može da se pročita bez odgovarajućeg ključa) i heširanje (pretvaranje podataka u jedinstven niz znakova fiksne dužine – heš). To je jedan od ključnih mehanizama zaštite podataka: obezbeđuje poverljivost, integritet i bezbednost informacija, kako uskladištenih, tako i onih u prenosu.

Sistem koristi različite algoritme šifrovanja i heširanja podataka.

Primena šifrovanja u sistemu

Šifrovanje uskladištenih podataka

  • Baze podataka: šifrovanje pojedinačnih polja baze podataka.
  • Fajlovi: šifrovanje fajlova pre čuvanja na disku.

Šifrovanje podataka u prenosu

  • HTTPS: korišćenje protokola SSL/TLS za šifrovanje podataka pri prenosu kroz mrežu.
  • VPN: uspostavljanje bezbednog tunela za prenos podataka.

Šifrovanje lozinki

Čuvanje heševa lozinki umesto samih lozinki.

Primeri šifrovanja i dešifrovanja podataka

Pogledajmo primere šifrovanja i dešifrovanja konfiguracionih fajlova sistema.

Šifrovanje podataka

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)

Dešifrovanje podataka

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

Prednosti šifrovanja podataka

  • Poverljivost: zaštita podataka od neovlašćenog pristupa.
  • Integritet: garancija da podaci nisu izmenjeni.
  • Autentičnost: potvrda izvora podataka.
  • Usaglašenost sa propisima: ispunjavanje regulatornih zahteva.

Revizija i praćenje

Nekoliko komponenti prati aktivnost korisnika i sistema, otkriva sumnjivo ponašanje i obezbeđuje usaglašenost sa bezbednosnim zahtevima. Zajedno ove komponente:

  • prikupljaju, analiziraju i čuvaju informacije o aktivnosti korisnika i sistema kako bi obezbedile odgovornost i usaglašenost;
  • neprekidno prate sistem i opremu u realnom vremenu kako bi otkrile incidente i reagovale na njih.

Ciljevi

  • Odgovornost: garancija da se evidentira celokupna aktivnost korisnika i sistema.
  • Bezbednost: otkrivanje i sprečavanje neovlašćenih aktivnosti.
  • Otkrivanje problema: prepoznavanje hardverskih problema i anomalija, kao i preduzimanje korektivnih mera.
  • Optimizacija performansi: analiza performansi sistema i pronalaženje uskih grla koja zahtevaju optimizaciju.
  • Predviđanje i planiranje: prikupljanje podataka za prognozu budućeg opterećenja i planiranje resursa.
  • Usaglašenost: obezbeđivanje usaglašenosti sa regulatornim zahtevima.
  • Analiza incidenata: analiza incidenata do kojih je došlo, radi sprečavanja budućih.

Komponente revizije i praćenja

Prikupljanje podataka

  • Zapisi (logovi): evidencija radnji korisnika i sistema na svim nivoima.
  • Metrike: podaci o performansama sistema (na primer, opterećenje procesora, zauzeće memorije).

Skladištenje podataka

  • Skladištenje zapisa: prikupljanje podataka iz različitih izvora i distribuirano skladištenje zapisa i metrika, organizovano po tematskim oblastima.
  • Rotacija zapisa: automatsko brisanje starih zapisa radi uštede prostora.

Analiza podataka

  • Pretraga i filtriranje: mogućnost pretrage i filtriranja zapisa po različitim kriterijumima.
  • Analitika: korišćenje alata za analizu podataka (na primer, Zabbix).

Upozorenja

  • Upozorenja: slanje obaveštenja o sumnjivim aktivnostima i havarijskim situacijama (na primer, imejlom ili u Telegram čet).
  • Automatske radnje: automatsko reagovanje na incidente (na primer, blokiranje korisnika).

Primer implementacije

Evidentiranje

Korišćenje biblioteke za evidentiranje u aplikaciji.

Prikupljanje grešaka u podacima sa merila

Skladištenje zapisa

Korišćenje centralizovanog skladišta za zapise.

Tabela audits

U ovoj tabeli čuvaju se informacije o evidentiranju podataka.

PoljeTipOpis
idintegerJedinstveni identifikator zapisa (primarni ključ).
auditable_idintegerReferenca na objekat revizije (equipment.id, stations.id …).
auditable_typecharacter varyingObjekat revizije (equipment, stations …).
user_idintegerReferenca na identifikator korisnika (users.id)
actioncharacter varyingRadnja
audited_changesjsonbIzmene obuhvaćene revizijom
versionintegerVerzija izmena
remote_addresscharacter varyingUdaljena adresa
request_uuidcharacter varyingIdentifikator događaja.
created_attimestamp(6) without time zoneDatum i vreme izmene.
Tabela error_logs

U ovoj tabeli čuvaju se informacije o greškama u podacima koji stižu sa merila.

PoljeTipOpis
idintegerJedinstveni identifikator zapisa (primarni ključ).
loggable_idintegerReferenca na registrovani objekat (equipment.id …).
loggable_typecharacter varyingRegistrovani objekat (equipment …).
messageintegerReferenca na identifikator greške.
paramsjsonbKarakteristike greške.
created_attimestamp(6) without time zoneDatum i vreme izmene.

Analiza zapisa

Alati koji se koriste za analizu zapisa:

  • Podešavanje veb-obrazaca za vizuelizaciju i analizu zapisa.
  • Izrada kontrolnih tabli za praćenje aktivnosti korisnika.

Upozorenja

Prilagođena upozorenja o sumnjivim aktivnostima:

  • Podešavanje upozorenja u sistemu Zabbix za praćenje metrika.
  • Slanje obaveštenja imejlom ili u Telegram čet pri alarmnim događajima.

Prednosti revizije i praćenja

Revizija i praćenje su moćni alati za zaštitu podataka: pomoću njih pratite aktivnost korisnika i sistema, otkrivate sumnjivo ponašanje i obezbeđujete usaglašenost sa bezbednosnim zahtevima. Omogućavaju vam da:

  • obezbedite odgovornost za podatke i njihovu bezbednost;
  • prepoznate i sprečite incidente;
  • ispunite regulatorne zahteve.

Povezane teme

Poslednje ažuriranje

Da li vam je ova stranica bila korisna?