Databázové role a řízení přístupu

Database Design

Lis Sulmont

Curriculum Manager

Udělování a odebírání přístupu k pohledu

GRANT privilege(s) nebo REVOKE privilege(s)

ON object

TO role nebo FROM role

  • Oprávnění: SELECT, INSERT, UPDATE, DELETE atd.
  • Objekty: tabulka, pohled, schéma atd.
  • Role: databázový uživatel nebo skupina uživatelů
GRANT UPDATE ON ratings TO PUBLIC; 
REVOKE INSERT ON films FROM db_user; 
Database Design

Databázové role

  • Správa přístupových oprávnění k databázi
  • Databázová role je entita obsahující informace, které:
    • Definují oprávnění role
      • Lze se přihlásit?
      • Lze vytvářet databáze?
      • Lze zapisovat do tabulek?
    • Interagují s autentizačním systémem klienta
      • Heslo
  • Role lze přiřadit jednomu nebo více uživatelům
  • Role jsou globální v rámci celé instalace databázového clusteru
Database Design

Vytvoření role

  • Prázdná role
CREATE ROLE data_analyst;
  • Role s nastavenými atributy
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
Database Design

Udělování a odebírání oprávnění rolím

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

Dostupná oprávnění v PostgreSQL jsou:

  • SELECT, INSERT, UPDATE, DELETE, TRUNCATE, REFERENCES, TRIGGER, CREATE, CONNECT, TEMPORARY, EXECUTE a USAGE
1 http://bit.ly/postgresql_privileges
Database Design

Uživatelé a skupiny (jsou obojí role)

  • Role je entita, která může fungovat jako uživatel nebo skupina
    • Uživatelské role
    • Skupinové role

Grafika rolí, kde vnější kruh představuje skupinovou roli a tři vnitřní kruhy uvnitř jsou uživatelské role

Database Design

Uživatelé a skupiny (jsou obojí role)

Skupinová role

CREATE ROLE data_analyst;

Uživatelská role

CREATE ROLE intern WITH PASSWORD 'PasswordForIntern' VALID UNTIL '2020-01-01';
Database Design

Uživatelé a skupiny (jsou obojí role)

Skupinová role

CREATE ROLE data_analyst;

Uživatelská role

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

GRANT data_analyst TO alex;
REVOKE data_analyst FROM alex;
Database Design

Běžné role v PostgreSQL

Role Povolený přístup
pg_read_all_settings Čtení všech konfiguračních proměnných, včetně těch viditelných pouze pro superuživatele.
pg_read_all_stats Čtení všech pohledů pg_stat_* a používání statistických rozšíření, včetně těch viditelných pouze pro superuživatele.
pg_signal_backend Odesílání signálů jiným backendům (např. zrušení dotazu, ukončení).
Více... Více...
1 http://bit.ly/default_roles_postgresql
Database Design

Výhody a úskalí rolí

Výhody

  • Role přetrvají i po smazání uživatelů
  • Role lze vytvořit před uživatelskými účty
  • Šetří čas správcům databáze

Úskalí

  • Role může někdy udělit uživateli příliš mnoho přístupu
    • Je třeba věnovat pozornost
Database Design

Lass uns üben!

Database Design

Preparing Video For Download...