Un rôle de bases de données peut avoir un certain nombre d'attributs qui définissent ses droits et interagissent avec le système d'authentification du client.
Seuls les rôles disposant de l'attribut LOGIN
peuvent être
utilisés comme nom de rôle initial pour une connexion à une base de
données. Un rôle avec l'attribut LOGIN
peut être considéré
de la même façon qu'un « utilisateur de la base de données ».
Pour créer un rôle disposant du droit de connexion, utilisez :
CREATE ROLEnom
LOGIN; CREATE USERnom
;
(CREATE USER
est équivalent à CREATE ROLE
sauf que CREATE USER
utilise LOGIN
par défaut
alors que CREATE ROLE
ne le fait pas)
Les superutilisateurs ne sont pas pris en compte dans les vérifications
des droits, sauf le droit de connexion ou d'initier la réplication.
Ceci est un droit dangereux et ne devrait pas être
utilisé sans faire particulièrement attention ; il est préférable
de faire la grande majorité de votre travail avec un rôle qui n'est pas
superutilisateur. Pour créer un nouveau superutilisateur, utilisez
CREATE ROLE
. Vous devez le faire en tant que superutilisateur.
nom
SUPERUSER
Les droits de création de bases doivent être
explicitement données à un rôle (à l'exception des
super-utilisateurs qui passent au travers de toute
vérification de droits). Pour créer un tel rôle,
utilisez CREATE ROLE
.
nom_utilisateur
CREATEDB
Un rôle doit se voir explicitement donné le droit de créer plus de
rôles (sauf pour les superutilisateurs vu qu'ils ne sont pas pris en
compte lors des vérifications de droits). Pour créer un tel rôle,
utilisez CREATE ROLE
.
Un rôle disposant du droit nom
CREATEROLECREATEROLE
peut aussi modifier et
supprimer d'autres rôles, ainsi que donner ou supprimer l'appartenance à
ces rôles. Néanmoins, pour créer, modifier, supprimer ou changer
l'appartenance à un rôle superutilisateur, le statut de superutilisateur
est requis ; CREATEROLE
n'est pas suffisant pour cela.
Un rôle doit se voir explicitement donné le droit d'initier une
réplication en flux (sauf pour les superutilisateurs, puisqu'ils ne sont pas
soumis aux vérifications de permissions). Un rôle utilisé pour la réplication en flux doit
avoir le droit LOGIN
. Pour créer un tel
rôle, utilisez CREATE ROLE
.
nom
REPLICATION LOGIN
Un mot de passe est seulement significatif si la méthode
d'authentification du client exige que le client fournisse
un mot de passe quand il se connecte à la base. Les
méthodes d'authentification par mot de passe
et
md5
utilisent des mots de
passe. Les mots de passe de la base de données ne sont pas
les mêmes que ceux du système d'exploitation. Indiquez un
mots de passe lors de la création d'un rôle avec
CREATE ROLE
.
nom_utilisateur
PASSWORD
'le_mot_de_passe
'
Un rôle se voit donner par défaut le droit d'hériter des droits des rôles dont
il est membre. Néanmoins, pour créer un rôle sans le droit, utilisez
CREATE ROLE
.
nom
NOINHERIT
Un rôle doit se voir donner explicitement le droit de contourner chaque
politique de sécurité niveau ligne (RLS), sauf pour les
super-utilisateurs, car ces derniers contournent toutes les
vérifications de droits). Pour créer un tel rôle, utilisez
CREATE ROLE
comme un super-utilisateur.
nom
BYPASSRLS
La limite de connexions peut indiquer combien de connexions concurrentes
un même rôle peut réaliser. La valeur par défaut, -1, signifie aucune
limite. Indiquez une limite de connexion lors de la création d'un rôle
avec
CREATE ROLE
.
nom
CONNECTION LIMIT 'integer
'
Les attributs d'un rôle peuvent être modifiés après sa
création avec ALTER ROLE
.
Regardez les pages de références de CREATE ROLE et de
ALTER ROLE pour plus de détails.
Une bonne pratique est de créer un rôle qui dispose des droits
CREATEDB
et CREATEROLE
mais qui n'est pas un
superutilisateur, et d'utiliser ce rôle pour toute la gestion des bases
de données et des rôles. Cette approche évite les dangers encourus en
travaillant en tant que superutilisateur pour des tâches qui n'ont pas
besoin de cet état.
Un rôle peut aussi configurer ses options par défaut pour de nombreux paramètres de configuration décris dans le Chapitre 19. Par exemple, si, pour une raison ou une autre, vous voulez désactiver les parcours d'index (conseil : ce n'est pas une bonne idée) à chaque fois que vous vous connectez, vous pouvez utiliser :
ALTER ROLE myname SET enable_indexscan TO off;
Cela sauve les paramètres (mais ne les applique pas immédiatement).
Dans les connexions ultérieures de ce rôle, c'est comme si
SET enable_indexscan TO off
avait été appelé
juste avant le démarrage de la session. Vous pouvez toujours
modifier les paramètres durant la session. Pour supprimer une configuration
par défaut spécifique à un rôle, utilisez ALTER ROLE
.
Notez que les valeurs par défaut spécifiques aux rôles sans droit de connexion
(nom_utilisateur
RESET nom_variable
LOGIN
) sont vraiment inutiles car ils ne seront jamais appelés.