Datenbankrollen und Zugriffskontrollen

Datenbankdesign

Lis Sulmont

Curriculum Manager

Zugriff auf eine Sicht gewähren und widerrufen

GRANT privilege(s) oder REVOKE privilege(s)

ON object

TO role oder FROM role

  • Berechtigungen: SELECT, INSERT, UPDATE, DELETE usw.
  • Objekte: Tabelle, Sicht, Schema usw.
  • Rollen: einzelne Datenbanknutzende oder eine Gruppe
GRANT UPDATE ON ratings TO PUBLIC; 
REVOKE INSERT ON films FROM db_user; 
Datenbankdesign

Datenbankrollen

  • Verwalten von Zugriffsrechten einer Datenbank
  • Datenbankrolle ist Entität mit Informationen, die:
    • Die Rechte der Rolle festlegen
      • Kann sie sich einloggen?
      • Kann sie Datenbanken erstellen?
      • Kann sie in Tabellen schreiben?
    • Mit Client-Authentifizierungssystem interagieren
      • Passwort
  • Rollen können einzelnen oder mehreren Nutzenden zugewiesen werden
  • Rollen gelten global für eine Datenbankcluster-Installation
Datenbankdesign

Erstellen einer Rolle

  • Leere Rolle
CREATE ROLE data_analyst;
  • Rollen mit bestimmten festgelegten 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
Datenbankdesign

Rollenberechtigungen gewähren und entziehen

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

Die verfügbaren Berechtigungen in PostgreSQL lauten:

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

Benutzer und Gruppen (beides Rollen)

  • Eine Rolle ist eine Entität, die ein Benutzer und/oder eine Gruppe sein kann:
    • Benutzerrollen
    • Gruppenrollen

Roles graphic where an outer circle is a group role and three inner circles within the outer circle are user roles

Datenbankdesign

Benutzer und Gruppen (beides Rollen)

Gruppenrolle

CREATE ROLE data_analyst;

Benutzerrolle

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

Benutzer und Gruppen (beides Rollen)

Gruppenrolle

CREATE ROLE data_analyst;

Benutzerrolle

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

GRANT data_analyst TO alex;
REVOKE data_analyst FROM alex;
Datenbankdesign

Häufige PostgreSQL-Rollen

Rolle Berechtigung
pg_read_all_settings Lesen aller Konfigurationsvariablen, auch die, die sonst nur Superuser sehen können
pg_read_all_stats Lesen aller pg_stat_*-Sichten und Nutzen verschiedener statistikbezogener Erweiterungen, auch die, die sonst nur Superuser sehen können
pg_signal_backend Signale an andere Backends schicken (z. B.: Abfrage abbrechen, beenden)
Mehr ... Mehr ...
1 http://bit.ly/default_roles_postgresql
Datenbankdesign

Vorteile und Stolpersteine von Rollen

Vorteile

  • Rollen bleiben nach Löschen von Benutzern bestehen
  • Rollen können vor Benutzerkonten erstellt werden
  • Sparen Zeit bei DB-Verwaltung

Stolpersteine

  • Manchmal zu viel Zugriff für einzelne Benutzer
    • Rollen und Zugriffe sorgfältig im Blick behalten
Datenbankdesign

Lass uns üben!

Datenbankdesign

Preparing Video For Download...