Roller, Postgres

From Linuxwiki
Jump to navigation Jump to search

Skapa roller i Postgres

En roll i Postgres kan äga sina egna databasobjekt och ha databasprivilegier. Man kan se en roll som en användare, en grupp eller båda beroende på hur det används. För att kunna skapa en roll måste man ha privilegiet CREATEROLE eller vara en superuser.


Roller definieras på klusternivå och gäller för alla databaser i klustret.

Kommandot för att skapa en roll är

CREATE ROLE name [ [ WITH ] option [ ... ] ]

Name är namnet på rollen. Option förklaras här

SUPERUSER / NOSUPERUSER

En superuser står över restriktioner i databasen. Använd enbart när det verkligen behövs. För att tilldela en superuserroll måste man själv vara superuser. Standard är NOSUPERUSER.

CREATEDB / NOCREATEDB

Avgör om en roll kan skapa en databas. Standard är NOCREATEDB.

CREATEROLE / NOCREATEROLE

Bestämmer om en roll kan skapa, ändra, ta bort, kommentera och ändra "security label" för andra roller. Standard är NOCREATEROLE.

INHERIT / NOINHERIT

Detta påverkar "arv" när en roll läggs till som en medlem av en annan roll. Standard är INHEIT.

LOGIN / NOLOGIN

Styr ifall en roll har tillåtelse att logga in eller ej. En roll med detta attribut kan betraktas som en användare. Utan detta attribut kan en sådan roll vara lämpligt för att hantera databasrättigheter. Standard är NOLOGIN utom när CREATE ROLE används med sin alternativa stavning CREATE USER.

REPLICATION / NOREPLICATION

Denna behövs för att en roll ska vara en "replication role" och kunna ansluta till en server i replication mode. och för att kunna skapa eller droppa replikering. Detta är ett högt privilegie som bara ska användas för roller som används för replikering. Standard är NOREPLICATION.

BYPASSRLS / NOBYPASSRLS

Avgör om en roll kan gå förbi varje lågnivå säkerhetspolicy (RLS). Standard är NOBYPASSRLS. Notera att pg_dump sätter row_security till OFF som standard för att säkerställa att allt innehåll dumpas ut. Om användaren som kör pg_dump inte har korrekta rättigheter kommer ett felmeddelande att returneras. Superusers och tabellägaren går alltid förbi RLS i samband med pg_dump.

CONNECTION LIMIT connlimit

Om en roll kan logga in, specificerar detta hur många samtidiga anslutningar denna roll kan ha. -1 (standard) betyder att det inte finns någon begränsning. Detta innefattar enbart vanliga anslutningar. Varken preparerade transaktioner eller anslutningar startade i bakgrunden räknas.

[ ENCRYPTED ] PASSWORD 'password' / PASSWORD NULL

Sätter lösenord för rollen. Ett lösenord är enbart användbart i samband med LOGIN-attributet. Anger man inget lösenord sätts det till null och man kan inte logga in med ett lösenord för den användaren.

Undvik att sätta ett tomt lösenord. Gör man det sätts det till null.

Lösenordet sparas alltid krypterat i systemkatalogen. Argumentet ENCRYPTED finns endast med för bakåtkompatibilitet.

VALID UNTIL 'timestamp'

Efter att 'timestamp' har passerats är rollens lösenord inte längre giltigt. Standard är att det inte finns något utgångsdatum.

IN ROLE role_name

Gör så att den nya rollen automatiskt adderas som en medlem av den existerande rollen. Det nya medlemskapet har SET enabled och ADMIN disabled. INHERIT vill bli enabled såvida inte NOINHERIT anges.

ROLE role_name

ROLE gör så att specificerade existerande roller automatiskt adderas som medlemmar, med SET enabled. Detta gör så att den nya rollen blir en "grupp".

ADMIN role_name

ADMIN har samma effekt som ROLE men de namngivna rollerna läggs till som medlemmar på den nya rollen med ADMIN påslaget vilket ger dem rätten att granta medlemskap i den nya rollen till andra.

SYSID uid

Detta ignoreras men är med för bakåtkompatibilitet.

Noteringar

Redigera roller med ALTER ROLE och ta bort roller med DROP ROLE. Alla attribut skapade med CREATE ROLE kan modifieras med ALTER ROLE.

Exempel

Skapa en roll som kan logga in men utan lösenord

CREATE ROLE jonathan LOGIN;

Skapa en roll med ett lösenord (create user är samma som create role men det innefattar LOGIN)

CREATE USER  davide WITH PASSWORD 'jw8s0F4';

Skapa en roll med lösenrod som är giltigt till och med utgången av 2004.

CREATE ROLE miriam WITH LOGIN PASSWORD 'jw8s0F4' VALID UNTIL '2005-01-01';

Skapa en roll som kan skapa database och managera roller

CREATE ROLE admin WITH CREATEDB CREATEROLE;