Mehanizmi sigurnosti podataka
Jedinstvena autentifikacija i autorizacija, šifriranje podataka i izračun sažetka (hashing), kao i komponente za reviziju i nadzor koje štite podatke na cijeloj platformi.
Jedinstveni sustav autentifikacije i autorizacije
Jedinstveni sustav autentifikacije i autorizacije ključna je komponenta zaštite podataka koja pruža siguran pristup resursima sustava. Omogućuje vam upravljanje korisnicima, njihovim ovlastima i pristupom podacima na razini cijelog sustava.
Podsjetnik:
- Autentifikacija je postupak provjere identiteta korisnika (na primjer, pomoću korisničkog imena i lozinke).
- Autorizacija je postupak provjere ovlasti korisnika za izvršavanje određenih radnji (na primjer, za pristup podacima ili funkcijama sustava).
Komponente sustava
Autentifikacija
- Korisničko ime i lozinka: tradicionalni način autentifikacije. Korisnik se pri prijavi najprije mora identificirati korisničkim imenom i lozinkom.
- Višefaktorska autentifikacija (MFA): korištenje više faktora (na primjer, dinamički ažuriranog softverskog tokena za web-API).
Autentifikacija temeljena na tokenima pojednostavnjuje postupak za postojeće korisnike. Na početku korisnik šalje poslužitelju zahtjev s korisničkim imenom i lozinkom. Poslužitelj ih provjerava prema vrijednostima registriranim u svojoj bazi identiteta. Ako je identitet potvrđen, poslužitelj vraća token za autentifikaciju (koji se također čuva u bazi podataka).
Kada isti korisnik kasnije zatraži pristup zaštićenim resursima, takvi se zahtjevi mogu autorizirati tokenom za autentifikaciju umjesto korisničkim imenom i lozinkom. Poslužitelj uspoređuje token s onim koji je registriran u bazi podataka i odobrava pristup.
Autorizacija
- Uloge i ovlasti: korisnicima se dodjeljuju uloge (na primjer, administrator pristupa, korisnik) koje određuju njihove ovlasti.
- ACL (Access Control Lists): popisi za kontrolu pristupa koji određuju tko ima pristup kojim resursima.
- RBAC (Role-Based Access Control): kontrola pristupa temeljena na ulogama.
- ABAC (Attribute-Based Access Control): kontrola pristupa temeljena na atributima (na primjer, prema dobu dana ili lokaciji).
Pohrana podataka o korisnicima
- Baza korisnika: pohranjuje podatke o korisnicima, njihovim ulogama i ovlastima u jedinstvenoj bazi podataka.
Sigurnost
- Šifriranje: štiti podatke tijekom prijenosa i pohrane.
- Pristupni tokeni: softverski tokeni koji se dinamički ažuriraju i koriste za upravljanje sesijama.
- Revizija: bilježenje svih radnji korisnika radi kasnije analize.
Implementacija sustava
Platforma koristi postupak autentifikacije temeljen na tokenima. Korisnik se prijavljuje korisničkim imenom i lozinkom, sustav ih provjerava i vraća pristupni token, a taj se token zatim šalje uz svaki sljedeći zahtjev radi autorizacije pristupa zaštićenim resursima. Kao korisničko ime koristi se adresa e-pošte korisnika.
Primjer zahtjeva 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 sljedeć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. Vrijednost ovog zaglavlja koristi se kao lozinka za svaki zahtjev i mijenja se sa svakim zahtjevom.
Slijedi primjer zahtjeva 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 sljedeć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 završiti postupkom SignOut ili spremiti potrebna zaglavlja iz posljednjeg zahtjeva i ponovno ih upotrijebiti sljedeći put, ako token još nije istekao. Imajte na umu da posljednji token, ako sesija nije završena, ostaje valjan još neko vrijeme, ovisno o postavkama sustava na poslužitelju.
Prednosti sustava
Jedinstveni sustav autentifikacije i autorizacije moćan je alat za zaštitu podataka i kontrolu pristupa. Donosi sljedeće prednosti:
- Centralizirano upravljanje: pojednostavnjuje upravljanje korisnicima i njihovim ovlastima.
- Sigurnost: štiti podatke od neovlaštenog pristupa.
- Dosljednost: sve aplikacije i sustavi koriste isti mehanizam autentifikacije i autorizacije.
- Skalabilnost: olakšava dodavanje novih aplikacija i korisnika.
Šifriranje podataka
Kako bi zaštitio kritične informacije, sustav koristi šifriranje (pretvaranje informacija u oblik koji se ne može pročitati bez odgovarajućeg ključa) i izračun sažetka (hashing), tj. pretvaranje podataka u jedinstven niz znakova fiksne duljine – sažetak (hash). To je jedan od ključnih mehanizama zaštite podataka: osigurava povjerljivost, cjelovitost i sigurnost informacija, kako pohranjenih, tako i onih u prijenosu.
Sustav koristi različite algoritme za šifriranje podataka i izračun sažetka.
Primjena šifriranja u sustavu
Šifriranje pohranjenih podataka
- Baze podataka: šifriranje pojedinačnih polja baze podataka.
- Datoteke: šifriranje datoteka prije spremanja na disk.
Šifriranje podataka u prijenosu
- HTTPS: korištenje protokola SSL/TLS za šifriranje podataka pri mrežnom prijenosu.
- VPN: uspostavljanje sigurnog tunela za prijenos podataka.
Šifriranje lozinki
Pohrana sažetaka lozinki umjesto samih lozinki.
Primjeri šifriranja i dešifriranja podataka
Pogledajmo primjere šifriranja i dešifriranja konfiguracijskih datoteka sustava.
Šifriranje 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šifriranje podataka
mkdir_p(decrypted_dir_path)
File.write(decrypted_file_path,
Rails.application.encrypted(encrypted_file_path, key_path: 'config/system.key').read
)Prednosti šifriranja podataka
- Povjerljivost: zaštita podataka od neovlaštenog pristupa.
- Cjelovitost: jamstvo da podaci nisu izmijenjeni.
- Autentičnost: potvrda izvora podataka.
- Usklađenost s propisima: ispunjavanje regulatornih zahtjeva.
Revizija i nadzor
Nekoliko komponenata nadzire aktivnost korisnika i sustava, otkriva sumnjivo ponašanje i osigurava usklađenost sa sigurnosnim zahtjevima. Zajedno ove komponente:
- prikupljaju, analiziraju i pohranjuju informacije o aktivnosti korisnika i sustava kako bi osigurale odgovornost i usklađenost;
- neprekidno nadziru sustav i opremu u stvarnom vremenu kako bi otkrile incidente i reagirale na njih.
Ciljevi
- Odgovornost: jamstvo da se bilježi cjelokupna aktivnost korisnika i sustava.
- Sigurnost: otkrivanje i sprječavanje neovlaštenih aktivnosti.
- Otkrivanje problema: prepoznavanje hardverskih problema i anomalija te poduzimanje korektivnih mjera.
- Optimizacija performansi: analiza performansi sustava i pronalaženje uskih grla koja zahtijevaju optimizaciju.
- Predviđanje i planiranje: prikupljanje podataka za prognozu budućeg opterećenja i planiranje resursa.
- Usklađenost: osiguravanje usklađenosti s regulatornim zahtjevima.
- Analiza incidenata: analiza incidenata do kojih je došlo, radi sprječavanja budućih.
Komponente revizije i nadzora
Prikupljanje podataka
- Zapisi (logovi): evidencija radnji korisnika i sustava na svim razinama.
- Metrike: podaci o performansama sustava (na primjer, opterećenje procesora, zauzeće memorije).
Pohrana podataka
- Pohrana zapisa: prikupljanje podataka iz različitih izvora i distribuirana pohrana zapisa i metrika, organizirana po tematskim područjima.
- Rotacija zapisa: automatsko brisanje starih zapisa radi uštede prostora.
Analiza podataka
- Pretraživanje i filtriranje: mogućnost pretraživanja i filtriranja zapisa prema različitim kriterijima.
- Analitika: korištenje alata za analizu podataka (na primjer, Zabbix).
Upozorenja
- Upozorenja: slanje obavijesti o sumnjivim aktivnostima i havarijskim situacijama (na primjer, e-poštom ili u razgovor na Telegramu).
- Automatske radnje: automatsko reagiranje na incidente (na primjer, blokiranje korisnika).
Primjer implementacije
Bilježenje
Korištenje biblioteke za bilježenje 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 pogrešaka u podacima s mjerila
# 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)
endPohrana zapisa
Korištenje centralizirane pohrane zapisa.
Tablica audits
U ovoj tablici pohranjuju se informacije o bilježenju podataka.
| Polje | Tip | Opis |
|---|---|---|
id | integer | Jedinstveni identifikator zapisa (primarni ključ). |
auditable_id | integer | Referenca na objekt revizije (equipment.id, stations.id …). |
auditable_type | character varying | Objekt revizije (equipment, stations …). |
user_id | integer | Referenca na identifikator korisnika (users.id) |
action | character varying | Radnja |
audited_changes | jsonb | Izmjene obuhvaćene revizijom |
version | integer | Verzija izmjena |
remote_address | character varying | Udaljena adresa |
request_uuid | character varying | Identifikator događaja. |
created_at | timestamp(6) without time zone | Datum i vrijeme izmjene. |
Tablica error_logs
U ovoj tablici pohranjuju se informacije o pogreškama u podacima koji stižu s mjerila.
| Polje | Tip | Opis |
|---|---|---|
id | integer | Jedinstveni identifikator zapisa (primarni ključ). |
loggable_id | integer | Referenca na registrirani objekt (equipment.id …). |
loggable_type | character varying | Registrirani objekt (equipment …). |
message | integer | Referenca na identifikator pogreške. |
params | jsonb | Karakteristike pogreške. |
created_at | timestamp(6) without time zone | Datum i vrijeme izmjene. |
Analiza zapisa
Alati koji se koriste za analizu zapisa:
- Konfiguriranje web-obrazaca za vizualizaciju i analizu zapisa.
- Izrada nadzornih ploča za praćenje aktivnosti korisnika.
Upozorenja
Prilagođena upozorenja o sumnjivim aktivnostima:
- Konfiguriranje upozorenja u sustavu Zabbix za praćenje metrika.
- Slanje obavijesti e-poštom ili u razgovor na Telegramu pri alarmnim događajima.
Prednosti revizije i nadzora
Revizija i nadzor moćni su alati za zaštitu podataka: pomoću njih pratite aktivnost korisnika i sustava, otkrivate sumnjivo ponašanje i osiguravate usklađenost sa sigurnosnim zahtjevima. Omogućuju vam da:
- osigurate odgovornost za podatke i njihovu sigurnost;
- prepoznate i spriječite incidente;
- ispunite regulatorne zahtjeve.
Povezane teme
Je li vam ova stranica bila korisna?
Hvala vam na povratnoj informaciji!