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:
curl -i --header "Content-Type: application/json" \
--request POST \
--data '{"email":"api@local.net","password":"Str0ngPas$"}'\
https://server123/api/v1/auth/sign_inV odpovedi dostaneme nasledujúcu správu:
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:
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/stationsV odpovedi dostaneme nasledujúcu správu:
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: Bmh2GVrxr6aW0Hngor4gPw
token-type: Bearer
client: D-Uv3ER53873olhnNLjL9w
expiry: 1615311367
uid: api@local.net
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":"865293041101853","equipment_brand_name":"Corrector
BK","phone":"","equipment_id":1},...
],
"total_pages":7,
"current_page":2
}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
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
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.
# 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]
...
endZber chýb v údajoch z meradiel
# 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)
endUkladanie logov
Použitie centralizovaného úložiska pre logy.
Tabuľka audits
Táto tabuľka uchováva informácie o zaznamenávaní údajov.
| Pole | Typ | Popis |
|---|---|---|
id | integer | Jedinečný identifikátor záznamu (primárny kľúč). |
auditable_id | integer | Odkaz na auditovaný objekt (equipment.id, stations.id …). |
auditable_type | character varying | Auditovateľný objekt (equipment, stations …). |
user_id | integer | Odkaz na identifikátor používateľa (users.id) |
action | character varying | Akcia |
audited_changes | jsonb | Auditované zmeny |
version | integer | Verzia zmien |
remote_address | character varying | Vzdialená adresa |
request_uuid | character varying | Identifikátor udalosti. |
created_at | timestamp(6) without time zone | Dá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.
| Pole | Typ | Popis |
|---|---|---|
id | integer | Jedinečný identifikátor záznamu (primárny kľúč). |
loggable_id | integer | Odkaz na zaregistrovaný objekt (equipment.id …). |
loggable_type | character varying | Zaregistrovaný objekt (equipment …). |
message | integer | Odkaz na identifikátor chyby. |
params | jsonb | Charakteristiky chyby. |
created_at | timestamp(6) without time zone | Dá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
Bola táto stránka užitočná?
Ďakujeme za vašu spätnú väzbu!