Kapitel 18. Database roller og privilegier
On oktober 25, 2021 by adminDatabase roller er konceptuelt set helt adskilt fra operativsystemets brugere. I praksis kan det være praktisk at opretholde en korrespondance, men det er ikke nødvendigt. Databaseroller er globale på tværs af en installation af en databaseklynge (og ikke pr. individuel database). Hvis du vil oprette en rolle, skal du bruge kommandoen CREATE ROLE SQL:
CREATE ROLE name;
name følger reglerne for SQL-identifikatorer: Enten uudsmykket uden specialtegn eller i dobbelt citationstegn. (I praksis vil du normalt ønske at tilføje yderligere indstillinger, f.eks. LOGIN, til kommandoen. Flere detaljer vises nedenfor.) Hvis du vil fjerne en eksisterende rolle, skal du bruge den analoge DROP ROLE-kommando:
DROP ROLE name;
For nemheds skyld leveres programmerne createuser og dropuser som indpakninger omkring disse SQL-kommandoer, der kan kaldes fra shell-kommandolinjen:
createuser namedropuser name
For at bestemme sættet af eksisterende roller skal du undersøge systemkataloget pg_roles, for eksempel
SELECT rolname FROM pg_roles;
Metakommandoen \dudu i programmet psql er også nyttig til at liste de eksisterende roller.
For at starte databasesystemet op, indeholder et nyligt initialiseret system altid én foruddefineret rolle. Denne rolle er altid en “superbruger”, og som standard (medmindre den ændres ved kørsel af initdb) vil den have det samme navn som den operativsystembruger, der initialiserede databaseklyngen. Normalt vil denne rolle hedde postgres. For at oprette flere roller skal du først oprette forbindelse som denne indledende rolle.
Alle forbindelser til databaseserveren oprettes i navnet på en bestemt rolle, og denne rolle bestemmer de indledende adgangsprivilegier for kommandoer, der udstedes på denne forbindelse. Det rolle-navn, der skal bruges til en bestemt databaseforbindelse, angives af den klient, der initierer forbindelsesanmodningen på en applikationsspecifik måde. F.eks. bruger programmet psql kommandolinjeindstillingen -U til at angive den rolle, som der skal oprettes forbindelse som. Mange programmer antager som standard navnet på den aktuelle bruger i operativsystemet (herunder createuser og psql). Derfor er det ofte praktisk at opretholde en navnemæssig korrespondance mellem roller og operativsystembrugere.
Det sæt af database-roller, som en given klientforbindelse kan oprette forbindelse som, bestemmes af opsætningen af klientgodkendelse, som forklaret i kapitel 20. (En klient er således ikke nødvendigvis begrænset til at oprette forbindelse som den rolle, der har samme navn som dens operativsystembruger, ligesom en persons login-navn ikke nødvendigvis behøver at stemme overens med hendes rigtige navn). Da rolleidentiteten bestemmer det sæt af privilegier, der er tilgængelige for en tilsluttet klient, er det vigtigt at konfigurere dette omhyggeligt, når man opretter et flerbrugermiljø.
Skriv et svar