Action disabled: source
PostgreSQL Datenbankpraxis für Anwender, Administratoren und Entwickler

Kapitel 4 - Benutzerverwatung und -authentifizierung

Seite 78

Rolle anlegen

CREATE ROLE benutzername;


Rolle mit Datenbankzugang

CREATE ROLE benutzername WITH LOGIN;


Zugangsrecht ändern

ALTER ROLE benutzername WITH LOGIN;


Passwort angeben

CREATE ROLE benutzername WITH PASSWORD 'streng geheim';

Seite 79

Passwort verschlüsselt angeben

echo -n 'streng geheim' | md5sum
CREATE ROLE benutzername
         WITH ENCRYPTED PASSWORD '01a71ae0707abf41fea27a9e71abec36';


Superuser anlegen

CREATE ROLE admin WITH SUPERUSER;


Rolle darf Datenbanken anlegen

CREATE ROLE benutzer WITH CREATEDB;

Seite 80

Rolle darf andere Rollen anlegen

CREATE ROLE benutzer WITH CREATEROLE;


Rolle als Gruppe

CREATE ROLE benutzer IN ROLE admins;


GRANT

GRANT recht ON objekt TO rolle;

Seite 82

Jedem alle Rechte gewähren

GRANT ALL ON datentabelle TO PUBLIC;


Rechteweitergabe erlauben

GRANT ALL ON datentabelle TO entwickler WITH GRANT OPTION;


Eigentümer eines Objekts ändern

ALTER TABLE datentabelle OWNER TO entwickler;

Seite 83

REVOKE

REVOKE recht ON objekt FROM rolle;


Keine neuen Tabellen im Schema

REVOKE USAGE ON schemaname FROM PUBLIC;


Rechte rekursiv entfernen

REVOKE recht ON objekt FROM rolle CASCADE;


Rechte anzeigen

\x

Seite 84

Rechte anzeigen

\dp test


Rechte ändern

GRANT ALL ON test TO PUBLIC;
\dp test

Seite 85

Tabelle erstellen

CREATE TABLE spaltenbasiert (
  id       SERIAL       PRIMARY KEY,
  daten    TEXT
);
INSERT INTO spaltenbasiert (daten) VALUES ('23'), ('42');


Zugriffsrechte anpassen

REVOKE ALL ON spaltenbasiert FROM PUBLIC;
GRANT SELECT (daten) ON spaltenbasiert TO PUBLIC;


Zugriffsrechte anzeigen

dp spaltenbasiert

Seite 86

Neuen Benutzer erstellen und anwenden

CREATE ROLE anwender;
SET SESSION AUTHORIZATION 'anwender';
SELECT SESSION_USER, CURRENT_USER;


Daten auslesen

SELECT id, daten FROM spaltenbasiert;
SELECT daten FROM spaltenbasiert;

Seite 87

Tabelle und View erstellen

CREATE TABLE zeilenbasiert (
  id       INTEGER       PRIMARY KEY,
  daten    TEXT
);
CREATE VIEW zeilenbasiert_view
           AS SELECT id, daten FROM zeilenbasiert
        WHERE id < 100;


Zugriffsrechte anpassen

REVOKE ALL ON zeilenbasiert FROM PUBLIC;
GRANT SELECT ON zeilenbasiert_view TO PUBLIC;


Serverseitige Funktion erstellen

CREATE FUNCTION zeilenbasiert_func (id OUT, daten OUT)
      RETURNS SETOF record AS $$
       SELECT id, daten FROM zeilenbasiert
        WHERE id < 100;

$$ LANGUAGE SQL;

Seite 88

Zugriffsrechte anpassen

REVOKE ALL ON zeilenbasiert FROM PUBLIC;
GRANT EXECUTE ON zeilenbasiert_func TO PUBLIC;

Seite 89

Zugang von localhost

local      test      ads                      trust
host       test      ads      127.0.0.1/32    trust


Zugang zu verschiedenen Datenbanken

local      test      ads                      trust
local      samerole  ads                      trust

Seite 90

Verschiedene Benutzernamen

local      postgres  +admins                  trust


Netzwerkadressen angeben

host      test  +admins      192.168.0.0/24    md5
host      test  +admins      fe80::c0a8:0/120  md5
host      test  ads          0/0               md5

Seite 92

Beispiele

host      test  ads          192.168.0.0/24    md5
local     test  ads                            ident sameuser

Seite 93

LOGIN Privileg gewähren

ALTER ROLE ads WITH LOGIN;


LOGIN Privileg entziehen

ALTER ROLE ads WITH NOLOGIN;


sameuser in pg_hba.conf verwenden

local     sameuser     all                 ident sameuser

Seite 94

sameuser in pg_hba.conf

dbadmins         andreas           ads
dbadmins         pascal            pascal


Eigenes Mapping

local     sameuser     all                 ident dbadmins


Regulärer Ausdruck

beispiel    /(.*)@example.com    \1