Mechanizmy zabezpečenia údajov

Jednotná autentifikácia a autorizácia, šifrovanie a hašovanie údajov spolu so subsystémami auditu a monitorovania, ktoré chránia údaje naprieč platformou.

Jednotný systém autentifikácie a autorizácie

Jednotný systém autentifikácie a autorizácie je kľúčovou súčasťou ochrany údajov, ktorá zabezpečuje bezpečný prístup k systémovým zdrojom. Umožňuje spravovať používateľov, ich oprávnenia a prístup k údajom na úrovni celého systému.

Pripomenutie:

  • Autentifikácia je proces overenia totožnosti používateľa (napríklad pomocou používateľského mena a hesla).
  • Autorizácia je proces overenia oprávnení používateľa na vykonanie určitých činností (napríklad prístup k údajom alebo k systémovým funkciám).

Súčasti systému

Autentifikácia

  • Prihlasovacie meno a heslo: tradičný spôsob autentifikácie. Pri prihlasovaní sa používateľ musí najprv identifikovať používateľským menom a heslom.
  • Viacfaktorová autentifikácia (MFA): použitie viacerých faktorov (napríklad dynamicky aktualizovaného softvérového tokenu pre webové API).

Autentifikácia založená na tokenoch zjednodušuje proces pre zavedených používateľov. Na začiatok používateľ odošle serveru požiadavku s používateľským menom a heslom. Server ich overí oproti hodnotám zaregistrovaným v jeho databáze totožností. Ak je totožnosť potvrdená, server vráti autentifikačný token (ktorý sa zároveň uloží do databázy).

Keď ten istý používateľ neskôr požiada o prístup k chráneným zdrojom, tieto požiadavky možno autorizovať pomocou autentifikačného tokenu namiesto používateľského mena a hesla. Server token porovná s tým, ktorý je zaregistrovaný v databáze, a udelí prístup.

Autorizácia

  • Roly a oprávnenia: používateľom sa priraďujú roly (napríklad správca prístupu, používateľ), ktoré definujú ich oprávnenia.
  • ACL (Access Control Lists): zoznamy, ktoré definujú, kto má prístup ku ktorým zdrojom.
  • RBAC (Role-Based Access Control): riadenie prístupu na základe rolí.
  • ABAC (Attribute-Based Access Control): riadenie prístupu na základe atribútov (napríklad podľa dennej doby alebo polohy).

Ukladanie používateľských údajov

  • Databáza používateľov: ukladá informácie o používateľoch, ich rolách a oprávneniach v jednej databáze.

Zabezpečenie

  • Šifrovanie: chráni údaje počas prenosu aj uloženia.
  • Prístupové tokeny: dynamicky aktualizované softvérové tokeny používané na správu relácií.
  • Auditovanie: zaznamenávanie všetkých činností používateľov na neskoršiu analýzu.

Implementácia systému

Platforma používa autentifikačný tok založený na tokenoch. Používateľ sa prihlási prihlasovacím menom a heslom, systém ich overí a vráti prístupový token, ktorý sa následne odosiela s každou ďalšou požiadavkou na autorizáciu prístupu k chráneným zdrojom. Ako prihlasovacie meno sa používa e-mailová adresa používateľa.

Príklad požiadavky vo formáte 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

V odpovedi dostaneme nasledujúcu správu:

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

V tejto odpovedi nás zaujíma parameter access_token. Hodnota tejto hlavičky sa používa ako heslo pre každú požiadavku a mení sa s každou požiadavkou.

Tu je príklad požiadavky, ktorá používa token z predchádzajúcej odpovede:

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

V odpovedi dostaneme nasledujúcu správu:

Na ukončenie relácie môžete použiť procedúru SignOut, prípadne uložiť potrebné hlavičky z poslednej požiadavky a opätovne ich použiť nabudúce, ak token ešte nevypršal. Upozorňujeme, že bez ukončenia relácie zostáva posledný token istý čas platný, v závislosti od systémových nastavení servera.

Výhody systému

Jednotný systém autentifikácie a autorizácie je výkonným nástrojom na ochranu údajov a riadenie prístupu. Poskytuje tieto výhody:

  • Centralizovaná správa: zjednodušuje správu používateľov a ich oprávnení.
  • Zabezpečenie: chráni údaje pred neoprávneným prístupom.
  • Konzistentnosť: všetky aplikácie a systémy používajú rovnaký mechanizmus autentifikácie a autorizácie.
  • Škálovateľnosť: uľahčuje pridávanie nových aplikácií a používateľov.

Šifrovanie údajov

Na ochranu kritických informácií systém používa šifrovanie (prevod informácií do podoby, ktorú nemožno prečítať bez príslušného kľúča) a hašovanie (prevod údajov na jedinečný reťazec pevnej dĺžky — haš). Ide o jeden z kľúčových mechanizmov ochrany údajov, ktorý zabezpečuje dôvernosť, integritu a bezpečnosť informácií tak pri uložení, ako aj pri prenose.

Systém používa rôzne algoritmy šifrovania a hašovania údajov.

Použitie šifrovania v systéme

Šifrovanie pri uložení

  • Databázy: šifrovanie jednotlivých polí databázy.
  • Súbory: šifrovanie súborov pred ich uložením na disk.

Šifrovanie údajov pri prenose

  • HTTPS: použitie SSL/TLS na šifrovanie údajov počas sieťového prenosu.
  • VPN: vytvorenie zabezpečeného tunela na prenos údajov.

Šifrovanie hesiel

Ukladanie hašov hesiel namiesto hesiel.

Príklady šifrovania a dešifrovania údajov

Pozrime sa na príklady šifrovania a dešifrovania konfiguračných súborov systému.

Šifrovanie údajov

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šifrovanie údajov

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

Výhody šifrovania údajov

  • Dôvernosť: ochrana údajov pred neoprávneným prístupom.
  • Integrita: zaistenie, že údaje neboli zmenené.
  • Pravosť: potvrdenie zdroja údajov.
  • Súlad s predpismi: splnenie regulačných požiadaviek.

Audit a monitorovanie

Niekoľko subsystémov monitoruje činnosť používateľov a systému, zisťuje podozrivé správanie a zabezpečuje súlad s bezpečnostnými požiadavkami. Spoločne:

  • zhromažďujú, analyzujú a uchovávajú informácie o činnosti používateľov a systému na zaistenie zodpovednosti a súladu;
  • nepretržite monitorujú systém a zariadenia v reálnom čase, aby zistili incidenty a reagovali na ne.

Ciele

  • Zodpovednosť: zaistenie, že všetka činnosť používateľov a systému je zaznamenaná.
  • Zabezpečenie: zisťovanie a predchádzanie neoprávnenej činnosti.
  • Zisťovanie problémov: identifikácia hardvérových problémov a anomálií a prijatie nápravných opatrení.
  • Optimalizácia výkonu: analýza výkonu systému a hľadanie úzkych miest, ktoré si vyžadujú optimalizáciu.
  • Predikcia a plánovanie: zhromažďovanie údajov na prognózovanie budúceho zaťaženia a plánovanie zdrojov.
  • Súlad: zabezpečenie súladu s regulačnými požiadavkami.
  • Analýza incidentov: analýza incidentov, ktoré sa vyskytli, s cieľom predísť budúcim.

Súčasti auditu a monitorovania

Zber údajov

  • Záznamy (logy): záznamy o činnosti používateľov a systému na všetkých úrovniach.
  • Metriky: údaje o výkone systému (napríklad využitie procesora, využitie pamäte).

Ukladanie údajov

  • Úložisko logov: zhromažďovanie údajov z rôznych zdrojov s distribuovaným uložením logov a metrík usporiadaným podľa tematických oblastí.
  • Rotácia logov: automatické odstraňovanie starých logov s cieľom šetriť miesto.

Analýza údajov

  • Vyhľadávanie a filtrovanie: možnosť vyhľadávať a filtrovať logy podľa rôznych kritérií.
  • Analytika: použitie nástrojov na analýzu údajov (napríklad Zabbix).

Upozornenia

  • Upozornenia: odosielanie notifikácií o podozrivej činnosti a mimoriadnych udalostiach (napríklad e-mailom alebo do chatu Telegram).
  • Automatické akcie: automatické reagovanie na incidenty (napríklad zablokovanie používateľa).

Príklad implementácie

Zaznamenávanie do logu

Použitie knižnice na zaznamenávanie do logu v aplikácii.

Zber chýb v údajoch z meradiel

Ukladanie logov

Použitie centralizovaného úložiska pre logy.

Tabuľka audits

Táto tabuľka uchováva informácie o zaznamenávaní údajov.

PoleTypPopis
idintegerJedinečný identifikátor záznamu (primárny kľúč).
auditable_idintegerOdkaz na auditovaný objekt (equipment.id, stations.id …).
auditable_typecharacter varyingAuditovateľný objekt (equipment, stations …).
user_idintegerOdkaz na identifikátor používateľa (users.id)
actioncharacter varyingAkcia
audited_changesjsonbAuditované zmeny
versionintegerVerzia zmien
remote_addresscharacter varyingVzdialená adresa
request_uuidcharacter varyingIdentifikátor udalosti.
created_attimestamp(6) without time zoneDátum/čas zmeny.
Tabuľka error_logs

Táto tabuľka uchováva informácie o chybách v údajoch prichádzajúcich z meradiel.

PoleTypPopis
idintegerJedinečný identifikátor záznamu (primárny kľúč).
loggable_idintegerOdkaz na zaregistrovaný objekt (equipment.id …).
loggable_typecharacter varyingZaregistrovaný objekt (equipment …).
messageintegerOdkaz na identifikátor chyby.
paramsjsonbCharakteristiky chyby.
created_attimestamp(6) without time zoneDátum/čas zmeny.

Analýza logov

Nástroje používané na analýzu logov:

  • Nastavenie webových formulárov na vizualizáciu a analýzu logov.
  • Vytváranie dashboardov na monitorovanie činnosti používateľov.

Upozornenia

Prispôsobené upozornenia na podozrivú činnosť:

  • Konfigurácia upozornení v nástroji Zabbix na monitorovanie metrík.
  • Odosielanie notifikácií e-mailom alebo do chatu Telegram pri poplachových udalostiach.

Výhody auditu a monitorovania

Audit a monitorovanie sú výkonné nástroje na ochranu údajov, ktoré umožňujú sledovať činnosť používateľov a systému, identifikovať podozrivé správanie a zabezpečiť súlad s bezpečnostnými požiadavkami. Umožňujú vám:

  • zaistiť zodpovednosť a bezpečnosť údajov;
  • identifikovať incidenty a predchádzať im;
  • splniť regulačné požiadavky.

Súvisiace témy

Naposledy aktualizované

Bola táto stránka užitočná?