Brugere vs. grupper
Det er en snydeoverskrift, da det i princippet er det samme, en ROLE
En bruger er en ROLE
der kan logge ind, en gruppe kan ikke.
Man kan give en ROLE
rettigheder fra en anden (hvis rollen har lov til at
arve), f.eks.
GRANT administratorrolle TO minbruger;
Det er god stil kun at tildele rettigheder fra grupper til brugere (eller grupper til andre grupper), men man kan også tildele én brugers rettigheder til en anden.
Brugeroprettelse
En ny rolle oprettese simpelt således
CREATE ROLE nybryger;
Hvis det skal være en almindelig bruger, skal personen have et password og retten til at logge ind
CREATE ROLE nybruger LOGIN PASSWORD 'superhemmeligt';
Hvis man eksplicit vil sige at det ikke er en loginbruger (selvom det er default-værdien) kan man skrive:
CREATE ROLE nyrolle NOLOGIN;
Flere attributter
Udover LOGIN/NOLOGIN er der følgende attributter:
SUPERUSER/NOSUPERUSER: En superbruger må mere eller mindre alt, bortset fra at logge ind (medmindre denne tilladelse er givet) Pas på med at give denne tilladelse. Især til Christian Fischer.
CREATEDB/NOCREATEDB: Angiver om rollen må skabe nye databaser.
CREATEROLE/NOCREATEROLE: Angiver om rollen må skabe nye roller. Kan også skabe roller med andre attributter end sig selv, dog kan kun superusers oprette nye superusers.
REPLICATION/NOREPLICATION: Angiver om brugeren må igangsætte replikering. Dette kræver også LOGIN
INHERIT/NOINHERIT: Angiver om rollen må arve rettigheder fra andre roller
Rettigheder - Privileges
For at tildele en rettighed bruges GRANT
, fx:
GRANT xyz ON DATABASE databasenavn TO rolle;
På samme måde kan man fjerne privilegierne igen med REVOKE
, fx.
REVOKE xyz ON DATABASE databasenavn FROM rolle;
I eksemplerne ovenfor kan ON DATABASE
være en række af ting, bl.a.
ON SCHEMA
, ON TABLE
eller ON FUNCTION
Man kan se mere her: https://www.postgresql.org/docs/10/sql-grant.html
Databasen
CONNECT Brugeren må forbinde til databasen.
TEMPORARY Brugeren må skabe midlertidige tabeller.
CREATE Brugeren må skabe nye schemaer.
Schemaet
USAGE Brugeren må bruge tabeller i schemaet.
CREATE Brugeren må skabe nye tabeller i schemaet.
Tabeller
SELECT Brugeren må se data fra tabellen.
INSERT Brugeren må indsætte nye data i tabellen.
UPDATE Brugeren må opdatere eksisterende rækker i tabellen.
DELETE Brugeren må slette en, flere eller ALLE rækker i tabellen.
TRUNCATE Brugeren må rydde tabellen.
REFERENCES Brugeren må oprette en anden tabel, der i en fremmednøgle refererer til tabellen.
TRIGGER: Brugeren må lave en trigger på tabellen.
Minimumsprivilegier
For at en rolle skal kunne se på data skal hun have følgende minimumprivilegier:
- CONNECT til databasen
- USAGE på schemaet
- SELECT på tabellen eller viewet
Øvelse
Lav en læse-gruppe-rolle der har adgang til at læse øvelsesdata, og
Lav en ny login-bruger, der skal
Være medlem af læse-gruppe-rollen
Specifikt have adgang til at tilføje nye skorstene og opdatere eksisterende