Databaserollen en toegangsbeheer

Databaseontwerp

Lis Sulmont

Curriculum Manager

Toegang geven en intrekken voor een view

GRANT privilege(s) of REVOKE privilege(s)

ON object

TO role of FROM role

  • Privileges: SELECT, INSERT, UPDATE, DELETE, etc.
  • Objecten: tabel, view, schema, etc.
  • Rollen: een databasegebruiker of een groep gebruikers
GRANT UPDATE ON ratings TO PUBLIC; 
REVOKE INSERT ON films FROM db_user; 
Databaseontwerp

Databaserollen

  • Beheer database-toegangsrechten
  • Een databaserol is een entiteit met info die:
    • De rechten van de rol definieert
      • Kun je inloggen?
      • Kun je databases maken?
      • Kun je naar tabellen schrijven?
    • Met het client-authenticatiesysteem werkt
      • Wachtwoord
  • Rollen kun je toewijzen aan één of meer gebruikers
  • Rollen zijn globaal binnen een databasecluster-installatie
Databaseontwerp

Maak een rol

  • Lege rol
CREATE ROLE data_analyst;
  • Rollen met enkele attributen
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
Databaseontwerp

Privileges verlenen en intrekken bij rollen

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

De beschikbare privileges in PostgreSQL zijn:

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

Gebruikers en groepen (zijn beide rollen)

  • Een rol is een entiteit die kan werken als gebruiker en/of groep
    • Gebruikersrollen
    • Groepsrollen

Grafiek met rollen: een buitenste cirkel is een groepsrol en drie binnencirkels zijn gebruikersrollen

Databaseontwerp

Gebruikers en groepen (zijn beide rollen)

Groepsrol

CREATE ROLE data_analyst;

Gebruikersrol

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

Gebruikers en groepen (zijn beide rollen)

Groepsrol

CREATE ROLE data_analyst;

Gebruikersrol

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

GRANT data_analyst TO alex;
REVOKE data_analyst FROM alex;
Databaseontwerp

Veelvoorkomende PostgreSQL-rollen

Rol Toegang toegestaan
pg_read_all_settings Lees alle configuratievariabelen, ook die normaal alleen zichtbaar zijn voor superusers.
pg_read_all_stats Lees alle pg_stat_* views en gebruik diverse statistiekextensies, ook die normaal alleen zichtbaar zijn voor superusers.
pg_signal_backend Stuur signalen naar andere backends (bv. query annuleren, beëindigen).
Meer... Meer...
1 http://bit.ly/default_roles_postgresql
Databaseontwerp

Voor- en nadelen van rollen

Voordelen

  • Rollen blijven bestaan nadat gebruikers zijn verwijderd
  • Rollen kun je maken vóór gebruikersaccounts
  • Bespaart DBA’s tijd

Valkuilen

  • Soms geeft een rol een gebruiker te veel toegang
    • Let dus goed op
Databaseontwerp

Laten we oefenen!

Databaseontwerp

Preparing Video For Download...