Kapitel 18. Databasroller och privilegier
On oktober 25, 2021 by adminDatabasroller är konceptuellt sett helt skilda från operativsystemets användare. I praktiken kan det vara praktiskt att upprätthålla en korrespondens, men det är inte nödvändigt. Databasroller är globala över en installation av ett databaskluster (och inte per enskild databas). För att skapa en roll använder du kommandot CREATE ROLE SQL:
CREATE ROLE name;
name följer reglerna för SQL-identifierare: antingen osmyckat utan specialtecken eller med dubbla citationstecken. (I praktiken vill du vanligtvis lägga till ytterligare alternativ, till exempel LOGIN, till kommandot. Mer information finns nedan.) För att ta bort en befintlig roll använder du det analoga kommandot DROP ROLE:
DROP ROLE name;
För enkelhetens skull tillhandahålls programmen createuser och dropuser som omslag kring dessa SQL-kommandon som kan anropas från skalkommandoraden:
createuser namedropuser name
För att fastställa uppsättningen befintliga roller undersöker du systemkatalogen pg_roles, till exempel
SELECT rolname FROM pg_roles;
Metakommandot \dudu i programmet psql är också användbart för att lista de befintliga rollerna.
För att starta upp databassystemet innehåller ett nyinitierat system alltid en fördefinierad roll. Denna roll är alltid en ”superanvändare”, och som standard (om den inte ändras när du kör initdb) kommer den att ha samma namn som den operativsystemanvändare som initialiserade databasklustret. Vanligtvis heter den här rollen postgres. För att skapa fler roller måste du först ansluta som denna initiala roll.
Alla anslutningar till databasservern görs i en viss rolls namn, och denna roll bestämmer de initiala åtkomsträttigheterna för kommandon som utfärdas på den anslutningen. Det rollnamn som ska användas för en viss databasanslutning anges av den klient som initierar anslutningsbegäran på ett tillämpningsspecifikt sätt. Programmet psql använder till exempel kommandoradsalternativet -U för att ange vilken roll man ska ansluta som. Många program antar som standard namnet på den aktuella användaren i operativsystemet (bland annat createuser och psql). Därför är det ofta lämpligt att upprätthålla en namnkorrespondens mellan roller och operativsystemanvändare.
Den uppsättning databasroller som en viss klientanslutning kan ansluta som bestäms av inställningen för klientautentisering, vilket förklaras i kapitel 20. (En klient är alltså inte nödvändigtvis begränsad till att ansluta som en roll med samma namn som sin operativsystemanvändare, precis som en persons inloggningsnamn inte behöver överensstämma med hennes riktiga namn). Eftersom rollidentiteten bestämmer den uppsättning privilegier som är tillgängliga för en ansluten klient, är det viktigt att noggrant konfigurera detta när man konfigurerar en fleranvändarmiljö.
Lämna ett svar