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:
curl -i --header "Content-Type: application/json" \
--request POST \
--data '{"email":"api-user@example.com","password":"Str0ngPas$"}'\
https://server123/api/v1/auth/sign_inKao odgovor stiže sledeća poruka:
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:
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/stationsKao odgovor stiže sledeća poruka:
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-2
token-type: Bearer
client: EXAMPLE-CLIENT-ID
expiry: 1615311367
uid: api-user@example.com
ETag: W/"ba0df406b647bd92f0bf3a18916714c1"
Cache-Control: max-age=0, private, must-revalidate
X-Request-Id: 35a26441-ae78-48fa-8b2e-e92d2605133b
X-Runtime: 0.167748
Transfer-Encoding: chunked
{"data": [
{"id":1,"name":"860000000000001","equipment_brand_name":"Corrector
BK","phone":"","equipment_id":1},...
],
"total_pages":7,
"current_page":2
}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
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
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.
# Logs all changes to models
gem "audited"
# Logging settings
Audited.config do |config|
config.audit_class = CustomAudit
end
class CustomAudit < Audited::Audit
default_scope { order(created_at: :desc) }
ACTION_NAME = { 'Create' => 'create',
'Update' => 'update',
'Destroy' => 'destroy' }.freeze
end
# Metering device
class Equipment < ApplicationRecord
audited except: [:password]
...
endPrikupljanje grešaka u podacima sa merila
# data model for error collection
class ErrorLog < ApplicationRecord
enum message: { invalid_equipment_serial_number: 0,
invalid_equipment_software_version: 1,
...
}
belongs_to :loggable, polymorphic: true
belongs_to :loggable_equipment, class_name: 'Equipment', foreign_key: :loggable_id, optional: true
validates :loggable_type, :loggable_id, :message, presence: true
end
# Event log
unless valid_value?(serial_number)
message_params = {equipment: equipment, new_serial_number: serial_number}
message2logger(loggable_obj: equipment, message: :invalid_equipment_serial_number, params: message_params)
endSkladištenje zapisa
Korišćenje centralizovanog skladišta za zapise.
Tabela audits
U ovoj tabeli čuvaju se informacije o evidentiranju podataka.
| Polje | Tip | Opis |
|---|---|---|
id | integer | Jedinstveni identifikator zapisa (primarni ključ). |
auditable_id | integer | Referenca na objekat revizije (equipment.id, stations.id …). |
auditable_type | character varying | Objekat revizije (equipment, stations …). |
user_id | integer | Referenca na identifikator korisnika (users.id) |
action | character varying | Radnja |
audited_changes | jsonb | Izmene obuhvaćene revizijom |
version | integer | Verzija izmena |
remote_address | character varying | Udaljena adresa |
request_uuid | character varying | Identifikator događaja. |
created_at | timestamp(6) without time zone | Datum i vreme izmene. |
Tabela error_logs
U ovoj tabeli čuvaju se informacije o greškama u podacima koji stižu sa merila.
| Polje | Tip | Opis |
|---|---|---|
id | integer | Jedinstveni identifikator zapisa (primarni ključ). |
loggable_id | integer | Referenca na registrovani objekat (equipment.id …). |
loggable_type | character varying | Registrovani objekat (equipment …). |
message | integer | Referenca na identifikator greške. |
params | jsonb | Karakteristike greške. |
created_at | timestamp(6) without time zone | Datum 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
Da li vam je ova stranica bila korisna?
Hvala vam na povratnoj informaciji!