Mechanismy zabezpečení dat

Jednotná autentizace a autorizace, šifrování a hašování dat a subsystémy auditu a monitorování, které chrání data v celé platformě.

Jednotný systém autentizace a autorizace

Jednotný systém autentizace a autorizace je klíčovou součástí ochrany dat, která zajišťuje bezpečný přístup k systémovým zdrojům. Umožňuje spravovat uživatele, jejich oprávnění a přístup k datům na úrovni celého systému.

Připomenutí:

  • Autentizace je proces ověření totožnosti uživatele (například pomocí uživatelského jména a hesla).
  • Autorizace je proces ověření oprávnění uživatele k provedení určitých akcí (například přístup k datům nebo systémovým funkcím).

Součásti systému

Autentizace

  • Jméno a heslo: tradiční způsob autentizace. Při přihlášení se uživatel musí nejprve identifikovat uživatelským jménem a heslem.
  • Vícefaktorová autentizace (MFA): použití několika faktorů (například dynamicky obnovovaného softwarového tokenu pro webové API).

Autentizace založená na tokenech zjednodušuje proces pro stávající uživatele. Pro zahájení odešle uživatel serveru požadavek s uživatelským jménem a heslem. Server je ověří proti hodnotám zaregistrovaným ve své databázi totožností. Je-li totožnost potvrzena, server vrátí autentizační token (který se rovněž ukládá do databáze).

Když tentýž uživatel později požádá o přístup k chráněným zdrojům, lze tyto požadavky autorizovat autentizačním tokenem místo uživatelského jména a hesla. Server porovná token s tím, který je zaregistrovaný v databázi, a udělí přístup.

Autorizace

  • Role a oprávnění: uživatelům jsou přidělovány role (například správce přístupu, uživatel), které definují jejich oprávnění.
  • ACL (Access Control Lists): seznamy, které určují, kdo má přístup ke kterým zdrojům.
  • RBAC (Role-Based Access Control): řízení přístupu na základě rolí.
  • ABAC (Attribute-Based Access Control): řízení přístupu na základě atributů (například podle denní doby nebo polohy).

Ukládání uživatelských dat

  • Databáze uživatelů: ukládá informace o uživatelích, jejich rolích a oprávněních do jediné databáze.

Zabezpečení

  • Šifrování: chrání data při přenosu i při ukládání.
  • Přístupové tokeny: dynamicky obnovované softwarové tokeny používané ke správě relací.
  • Audit: protokolování všech akcí uživatelů pro pozdější analýzu.

Implementace systému

Platforma využívá autentizaci založenou na tokenech. Uživatel se přihlásí jménem a heslem, systém je ověří a vrátí přístupový token, který se pak posílá s každým následujícím požadavkem k autorizaci přístupu k chráněným zdrojům. Jako přihlašovací jméno se používá e-mailová adresa uživatele.

Příklad požadavku ve formátu 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 odpovědi obdržíme následující zprá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 této odpovědi nás zajímá parametr access_token. Hodnota tohoto hlavičkového pole se používá jako heslo pro každý požadavek a s každým požadavkem se mění.

Zde je příklad požadavku, který používá token z předchozí odpovědi:

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 odpovědi obdržíme následující zprávu:

K ukončení relace lze použít proceduru SignOut, případně uložit potřebné hlavičky z posledního požadavku a příště je znovu použít, pokud token dosud nevypršel. Mějte na paměti, že bez ukončení relace zůstává poslední token po určitou dobu platný, a to v závislosti na systémovém nastavení serveru.

Výhody systému

Jednotný systém autentizace a autorizace je výkonný nástroj pro ochranu dat a řízení přístupu. Přináší tyto výhody:

  • Centralizovaná správa: zjednodušuje správu uživatelů a jejich oprávnění.
  • Zabezpečení: chrání data před neoprávněným přístupem.
  • Konzistence: všechny aplikace a systémy používají stejný mechanismus autentizace a autorizace.
  • Škálovatelnost: usnadňuje přidávání nových aplikací a uživatelů.

Šifrování dat

K ochraně kritických informací systém využívá šifrování (převod informací do podoby, kterou nelze přečíst bez příslušného klíče) a hašování (převod dat na jedinečný řetězec pevné délky — haš). Jde o jeden z klíčových mechanismů ochrany dat, který zajišťuje důvěrnost, integritu a bezpečnost informací jak při ukládání, tak při přenosu.

Systém používá různé algoritmy šifrování a hašování dat.

Uplatnění šifrování v systému

Šifrování při ukládání

  • Databáze: šifrování jednotlivých polí databáze.
  • Soubory: šifrování souborů před jejich uložením na disk.

Šifrování dat při přenosu

  • HTTPS: použití SSL/TLS k šifrování dat při síťovém přenosu.
  • VPN: vytvoření zabezpečeného tunelu pro přenos dat.

Šifrování hesel

Ukládání hašů hesel místo samotných hesel.

Příklady šifrování a dešifrování dat

Podívejme se na příklady šifrování a dešifrování konfiguračních souborů systému.

Šifrování dat

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šifrování dat

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

Přínosy šifrování dat

  • Důvěrnost: ochrana dat před neoprávněným přístupem.
  • Integrita: zajištění, že data nebyla pozměněna.
  • Pravost: potvrzení zdroje dat.
  • Soulad s předpisy: splnění regulatorních požadavků.

Audit a monitorování

Činnost uživatelů a systému sleduje několik subsystémů, které odhalují podezřelé chování a zajišťují soulad s bezpečnostními požadavky. Společně:

  • shromažďují, analyzují a uchovávají informace o činnosti uživatelů a systému, čímž zajišťují odpovědnost a soulad s předpisy;
  • nepřetržitě monitorují systém a zařízení v reálném čase, aby bylo možné detekovat incidenty a reagovat na ně.

Cíle

  • Odpovědnost: zajištění, že veškerá činnost uživatelů a systému je zaznamenávána.
  • Zabezpečení: detekce a předcházení neoprávněné činnosti.
  • Odhalování problémů: identifikace hardwarových problémů a anomálií a přijetí nápravných opatření.
  • Optimalizace výkonu: analýza výkonu systému a hledání úzkých míst, která vyžadují optimalizaci.
  • Predikce a plánování: sběr dat pro předpovídání budoucí zátěže a plánování zdrojů.
  • Soulad s předpisy: zajištění souladu s regulatorními požadavky.
  • Analýza incidentů: analýza incidentů, k nimž došlo, za účelem předcházení dalším.

Součásti auditu a monitorování

Sběr dat

  • Protokoly: záznamy o akcích uživatelů a systému na všech úrovních.
  • Metriky: data o výkonu systému (například vytížení procesoru, využití paměti).

Ukládání dat

  • Úložiště protokolů: sběr dat z různých zdrojů s distribuovaným ukládáním protokolů a metrik uspořádaným podle tematických oblastí.
  • Rotace protokolů: automatické mazání starých protokolů kvůli úspoře místa.

Analýza dat

  • Vyhledávání a filtrování: možnost vyhledávat a filtrovat protokoly podle různých kritérií.
  • Analytika: použití nástrojů pro analýzu dat (například Zabbix).

Upozornění

  • Upozornění: odesílání oznámení o podezřelé činnosti a mimořádných událostech (například e-mailem nebo do chatu Telegram).
  • Automatické akce: automatická reakce na incidenty (například zablokování uživatele).

Příklad implementace

Protokolování

Použití knihovny pro protokolování v aplikaci.

Sběr chyb v datech z měřidel

Ukládání protokolů

Použití centralizovaného úložiště pro protokoly.

Tabulka audits

Tato tabulka ukládá informace o protokolování dat.

PoleTypPopis
idintegerJedinečný identifikátor záznamu (primární klíč).
auditable_idintegerOdkaz na auditovaný objekt (equipment.id, stations.id …).
auditable_typecharacter varyingAuditovaný objekt (equipment, stations …).
user_idintegerOdkaz na identifikátor uživatele (users.id)
actioncharacter varyingAkce
audited_changesjsonbAuditované změny
versionintegerVerze změn
remote_addresscharacter varyingVzdálená adresa
request_uuidcharacter varyingIdentifikátor události.
created_attimestamp(6) without time zoneDatum/čas změny.
Tabulka error_logs

Tato tabulka ukládá informace o chybách v datech přicházejících z měřidel.

PoleTypPopis
idintegerJedinečný identifikátor záznamu (primární klíč).
loggable_idintegerOdkaz na registrovaný objekt (equipment.id …).
loggable_typecharacter varyingRegistrovaný objekt (equipment …).
messageintegerOdkaz na identifikátor chyby.
paramsjsonbCharakteristiky chyby.
created_attimestamp(6) without time zoneDatum/čas změny.

Analýza protokolů

Nástroje používané k analýze protokolů:

  • Nastavení webových formulářů pro vizualizaci a analýzu protokolů.
  • Vytváření dashboardů pro monitorování činnosti uživatelů.

Upozornění

Přizpůsobená upozornění na podezřelou činnost:

  • Konfigurace upozornění v Zabbixu pro monitorování metrik.
  • Odesílání oznámení e-mailem nebo do chatu Telegram při poplachových událostech.

Přínosy auditu a monitorování

Audit a monitorování jsou výkonné nástroje ochrany dat, které umožňují sledovat činnost uživatelů a systému, odhalovat podezřelé chování a zajišťovat soulad s bezpečnostními požadavky. Umožňují:

  • zajistit odpovědnost a bezpečnost dat;
  • identifikovat incidenty a předcházet jim;
  • splnit regulatorní požadavky.

Související témata

Naposledy aktualizováno

Byla tato stránka užitečná?