Roluri de bază de date și controlul accesului

Proiectarea bazelor de date

Lis Sulmont

Curriculum Manager

Acordarea și revocarea accesului la o vizualizare

GRANT privilege(s) sau REVOKE privilege(s)

ON object

TO role sau FROM role

  • Privilegii: SELECT, INSERT, UPDATE, DELETE etc.
  • Obiecte: tabel, vizualizare, schemă etc.
  • Roluri: un utilizator sau un grup de utilizatori ai bazei de date
GRANT UPDATE ON ratings TO PUBLIC; 
REVOKE INSERT ON films FROM db_user; 
Proiectarea bazelor de date

Roluri de bază de date

  • Gestionează permisiunile de acces la baza de date
  • Un rol de bază de date este o entitate care conține informații ce:
    • Definesc privilegiile rolului
      • Se poate autentifica?
      • Se pot crea baze de date?
      • Se poate scrie în tabele?
    • Interacționează cu sistemul de autentificare
      • Parolă
  • Rolurile pot fi atribuite unuia sau mai multor utilizatori
  • Rolurile sunt globale în cadrul unui cluster de baze de date
Proiectarea bazelor de date

Crearea unui rol

  • Rol gol
CREATE ROLE data_analyst;
  • Roluri cu atribute definite
CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
CREATE ROLE admin CREATEDB;
ALTER ROLE admin CREATEROLE;
1 http://bit.ly/postgresql_attributes
Proiectarea bazelor de date

Acordarea și revocarea privilegiilor din roluri

GRANT UPDATE ON ratings TO data_analyst;
REVOKE UPDATE ON ratings FROM data_analyst;

Privilegiile disponibile în PostgreSQL sunt:

  • SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE și USAGE
1 http://bit.ly/postgresql_privileges
Proiectarea bazelor de date

Utilizatori și grupuri (ambele sunt roluri)

  • Un rol este o entitate care poate funcționa ca utilizator și/sau grup
    • Roluri de utilizator
    • Roluri de grup

Grafic cu roluri: un cerc exterior reprezintă un rol de grup, iar trei cercuri interioare reprezintă roluri de utilizator

Proiectarea bazelor de date

Utilizatori și grupuri (ambele sunt roluri)

Rol de grup

CREATE ROLE data_analyst;

Rol de utilizator

CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
Proiectarea bazelor de date

Utilizatori și grupuri (ambele sunt roluri)

Rol de grup

CREATE ROLE data_analyst;

Rol de utilizator

CREATE ROLE alex WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';

GRANT data_analyst TO alex;
REVOKE data_analyst FROM alex;
Proiectarea bazelor de date

Roluri PostgreSQL comune

Rol Acces permis
pg_read_all_settings Citește toate variabilele de configurare, inclusiv cele vizibile doar superutilizatorilor.
pg_read_all_stats Citește toate vizualizările pg_stat_* și utilizează extensii statistice, inclusiv cele vizibile doar superutilizatorilor.
pg_signal_backend Trimite semnale către alte procese backend (ex: anulare interogare, terminare).
Mai multe... Mai multe...
1 http://bit.ly/default_roles_postgresql
Proiectarea bazelor de date

Avantaje și dezavantaje ale rolurilor

Avantaje

  • Rolurile persistă după ștergerea utilizatorilor
  • Rolurile pot fi create înainte de conturi
  • Economisesc timp administratorilor BD

Dezavantaje

  • Uneori un rol acordă prea mult acces unui utilizator
    • Este necesară atenție sporită
Proiectarea bazelor de date

Să exersăm!

Proiectarea bazelor de date

Preparing Video For Download...