Mecanisme de securitate a datelor

Sistemul unificat de autentificare și autorizare, criptarea datelor și calcularea hash-ului, precum și componentele de audit și monitorizare care protejează datele în întreaga platformă.

Sistemul unificat de autentificare și autorizare

Sistemul unificat de autentificare și autorizare este o componentă esențială a protecției datelor și asigură accesul securizat la resursele sistemului. Vă permite să gestionați utilizatorii, drepturile acestora și accesul la date în întregul sistem.

Reamintim:

  • Autentificarea este procesul de verificare a identității unui utilizator (de exemplu, cu un nume de utilizator și o parolă).
  • Autorizarea este procesul de verificare a drepturilor unui utilizator de a efectua anumite acțiuni (de exemplu, accesul la date sau la funcțiile sistemului).

Componentele sistemului

Autentificare

  • Nume de utilizator și parolă: metoda tradițională de autentificare. La conectare, utilizatorul trebuie mai întâi să se identifice prin numele de utilizator și parola.
  • Autentificare multifactor (MFA): utilizarea mai multor factori (de exemplu, un token software actualizat dinamic pentru interfața Web API).

Autentificarea pe bază de token simplifică procesul pentru utilizatorii deja înregistrați. Pentru început, utilizatorul trimite serverului o cerere cu numele de utilizator și parola. Serverul le compară cu valorile înregistrate în baza sa de date de identități. Dacă identitatea este confirmată, serverul returnează un token de autentificare (care se stochează și el în baza de date).

Când același utilizator cere ulterior acces la resursele protejate, cererile sale pot fi autorizate cu tokenul de autentificare în locul numelui de utilizator și al parolei. Serverul compară tokenul cu cel înregistrat în baza de date și acordă accesul.

Autorizare

  • Roluri și drepturi: utilizatorilor li se atribuie roluri (de exemplu, administrator de acces, utilizator) care le stabilesc drepturile.
  • ACL (Access Control Lists): liste de control al accesului, care stabilesc cine și la ce resurse are acces.
  • RBAC (Role-Based Access Control): controlul accesului pe bază de roluri.
  • ABAC (Attribute-Based Access Control): controlul accesului pe bază de atribute (de exemplu, după ora din zi sau după locul din care se face accesul).

Stocarea datelor utilizatorilor

  • Baza de date a utilizatorilor: stochează într-o singură bază de date informațiile despre utilizatori, rolurile și drepturile acestora.

Securitate

  • Criptare: protejează datele în timpul transmisiei și al stocării.
  • Tokenuri de acces: tokenuri software actualizate dinamic, folosite pentru gestionarea sesiunilor.
  • Auditare: jurnalizarea tuturor acțiunilor utilizatorilor pentru analiza ulterioară.

Implementarea sistemului

Platforma folosește un flux de autentificare pe bază de token. Utilizatorul se autentifică cu numele de utilizator și parola, sistemul le verifică și returnează un token de acces, iar acest token se trimite apoi cu fiecare cerere ulterioară pentru autorizarea accesului la resursele protejate. Ca nume de utilizator se folosește adresa de e-mail a utilizatorului.

Exemplu de cerere în format Curl:

Request example
curl -i --header "Content-Type: application/json" \
--request POST \
--data '{"email":"api-user@example.com","password":"Str0ngPas$"}'\
https://server123/api/v1/auth/sign_in

Ca răspuns se primește următorul mesaj:

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

Din acest răspuns ne interesează parametrul access_token. Valoarea acestui antet se folosește ca parolă pentru fiecare cerere și se schimbă la fiecare cerere.

Iată un exemplu de cerere care folosește tokenul din răspunsul anterior:

Request example with token
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/stations

Ca răspuns se primește următorul mesaj:

Pentru a încheia sesiunea, puteți să folosiți procedura de deconectare (SignOut) sau să salvați anteturile necesare din ultima cerere și să le reutilizați data viitoare, dacă tokenul nu a expirat. Rețineți că, fără încheierea sesiunii, ultimul token rămâne valabil o perioadă de timp care depinde de setările de sistem ale serverului.

Avantajele sistemului

Un sistem unificat de autentificare și autorizare este un instrument puternic pentru protecția datelor și controlul accesului. Oferă următoarele avantaje:

  • Gestionare centralizată: simplifică gestionarea utilizatorilor și a drepturilor acestora.
  • Securitate: protejează datele împotriva accesului neautorizat.
  • Coerență: toate aplicațiile și sistemele folosesc același mecanism de autentificare și autorizare.
  • Scalabilitate: permite adăugarea ușoară de noi aplicații și utilizatori.

Criptarea datelor

Pentru a proteja informațiile critice, sistemul folosește criptarea (transformarea informațiilor într-o formă care nu poate fi citită fără cheia corespunzătoare) și calcularea hash-ului (transformarea datelor într-un șir unic de lungime fixă – un hash). Criptarea și calcularea hash-ului formează unul dintre mecanismele esențiale de protecție a datelor, care asigură confidențialitatea, integritatea și securitatea informațiilor, atât a celor stocate, cât și a celor în tranzit.

Sistemul folosește diverși algoritmi de criptare a datelor și de calculare a hash-ului.

Aplicarea criptării în sistem

Criptarea datelor stocate

  • Baze de date: criptarea anumitor câmpuri din baza de date.
  • Fișiere: criptarea fișierelor înainte de salvarea lor pe disc.

Criptarea datelor în tranzit

  • HTTPS: utilizarea protocoalelor SSL/TLS pentru criptarea datelor în timpul transmisiei prin rețea.
  • VPN: crearea unui tunel securizat pentru transmisia datelor.

Criptarea parolelor

Stocarea hash-urilor parolelor în locul parolelor propriu-zise.

Exemple de criptare și decriptare a datelor

Să analizăm câteva exemple de criptare și decriptare a fișierelor de configurare ale sistemului.

Criptarea datelor

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)

Decriptarea datelor

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

Avantajele criptării datelor

  • Confidențialitate: protecția datelor împotriva accesului neautorizat.
  • Integritate: garanția că datele nu au fost modificate.
  • Autenticitate: confirmarea sursei datelor.
  • Cerințe de conformitate: respectarea cerințelor din reglementări.

Audit și monitorizare

Mai multe componente monitorizează activitatea utilizatorilor și a sistemului, detectează comportamentele suspecte și asigură conformitatea cu cerințele de securitate. Împreună, acestea:

  • colectează, analizează și stochează informații despre activitatea utilizatorilor și a sistemului, pentru a asigura trasabilitatea și conformitatea;
  • monitorizează continuu, în timp real, sistemul și echipamentele, pentru a detecta incidentele și a reacționa la ele.

Obiective

  • Trasabilitate: garanția că toată activitatea utilizatorilor și a sistemului este înregistrată.
  • Securitate: detectarea și prevenirea activității neautorizate.
  • Detectarea problemelor: identificarea problemelor hardware și a anomaliilor, precum și aplicarea măsurilor corective.
  • Optimizarea performanței: analiza performanței sistemului și identificarea blocajelor care necesită optimizare.
  • Prognoză și planificare: colectarea datelor pentru a prognoza încărcarea viitoare și a planifica resursele.
  • Conformitate: asigurarea conformității cu cerințele din reglementări.
  • Analiza incidentelor: analiza incidentelor care au avut loc, pentru a le preveni pe cele viitoare.

Componentele de audit și monitorizare

Colectarea datelor

  • Jurnale: înregistrările acțiunilor utilizatorilor și ale sistemului la toate nivelurile.
  • Metrici: date despre performanța sistemului (de exemplu, gradul de utilizare a procesorului, consumul de memorie).

Stocarea datelor

  • Stocarea jurnalelor: colectarea datelor din diverse surse, cu stocarea distribuită a jurnalelor și a metricilor, organizată pe domenii tematice.
  • Rotația jurnalelor: ștergerea automată a jurnalelor vechi, pentru a economisi spațiu.

Analiza datelor

  • Căutare și filtrare: posibilitatea de a căuta și de a filtra jurnalele după diverse criterii.
  • Analiză: utilizarea instrumentelor de analiză a datelor (de exemplu, Zabbix).

Alerte

  • Alerte: trimiterea de notificări despre activitatea suspectă și despre situațiile de avarie (de exemplu, prin e-mail sau într-un chat Telegram).
  • Acțiuni automate: reacția automată la incidente (de exemplu, blocarea unui utilizator).

Exemplu de implementare

Jurnalizare

Utilizarea unei biblioteci pentru jurnalizare în aplicație.

Colectarea erorilor din datele primite de la contoare

Stocarea jurnalelor

Utilizarea unui spațiu de stocare centralizat pentru jurnale.

Tabelul audits

Acest tabel stochează informațiile de jurnalizare a datelor.

CâmpTipDescriere
idintegerIdentificatorul unic al înregistrării (cheie primară).
auditable_idintegerReferință la entitatea auditată (equipment.id, stations.id …).
auditable_typecharacter varyingEntitatea auditată (equipment, stations …).
user_idintegerReferință la identificatorul utilizatorului (users.id)
actioncharacter varyingAcțiune
audited_changesjsonbModificări auditate
versionintegerVersiunea modificărilor
remote_addresscharacter varyingAdresă la distanță
request_uuidcharacter varyingIdentificatorul evenimentului.
created_attimestamp(6) without time zoneData și ora modificării.
Tabelul error_logs

Acest tabel stochează informații despre erorile din datele primite de la contoare.

CâmpTipDescriere
idintegerIdentificatorul unic al înregistrării (cheie primară).
loggable_idintegerReferință la entitatea înregistrată (equipment.id …).
loggable_typecharacter varyingEntitatea înregistrată (equipment …).
messageintegerReferință la identificatorul erorii.
paramsjsonbCaracteristicile erorii.
created_attimestamp(6) without time zoneData și ora modificării.

Analiza jurnalelor

Instrumente folosite pentru analiza jurnalelor:

  • Configurarea unor formulare web pentru vizualizarea și analiza jurnalelor.
  • Crearea de tablouri de bord pentru monitorizarea activității utilizatorilor.

Alerte

Alerte personalizate pentru activitatea suspectă:

  • Configurarea alertelor în Zabbix pentru monitorizarea metricilor.
  • Trimiterea de notificări despre evenimentele de alarmă prin e-mail sau într-un chat Telegram.

Avantajele auditării și monitorizării

Auditarea și monitorizarea sunt instrumente puternice de protecție a datelor, care vă permit să urmăriți activitatea utilizatorilor și a sistemului, să identificați comportamentele suspecte și să asigurați conformitatea cu cerințele de securitate. Cu ajutorul lor puteți:

  • asigura trasabilitatea și securitatea datelor;
  • identifica și preveni incidentele;
  • îndeplini cerințele din reglementări.

Subiecte conexe

Ultima actualizare:

A fost utilă această pagină?