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

results matching ""

    No results matching ""