Ce chapitre décrit comment créer et gérer des rôles, et introduit le
système des droits. Plus d'informations sur les différents types
d'objets de la base de données et les effets des droits sont
disponibles dans le Chapitre 5,
Définition des données.
18.1. Rôles de la base de données
Conceptuellement, les rôles de la base sont totalement séparés des
utilisateurs du système d'exploitation. En pratique, il peut être
commode de maintenir une correspondance mais cela n'est pas requis.
Les rôles sont globaux à toute une installation de groupe de bases
de données (et non individuelle pour chaque base). Pour créer un
rôle, utilisez la commande SQL CREATE ROLE :
CREATE ROLE nom_utilisateur;
nom_utilisateur
suit les
règles des identifiants SQL : soit sans guillemets et sans
caractères spéciaux, soit entre double-guillemets (en pratique,
vous voudrez surtout ajouter des options supplémentaires, comme
LOGIN, à cette commande. Vous trouverez
plus de détails ci-dessous). Pour supprimer un rôle existant,
utilisez la commande analogue DROP ROLE :
DROP ROLE nom_utilisateur;
Pour une certaine facilité d'utilisation, les programmes
createuser(1) et
dropuser(1) sont fournis comme emballage de
ces commandes SQL et peuvent être appelés depuis la ligne de
commande du shell :
createuser nom_utilisateur
dropuser nom_utilisateur
Pour déterminer l'ensemble des rôles existants, examinez le
catalogue système pg_roles
existant, par exemple
SELECT rolname FROM pg_roles;
La méta-commande \du du programme
psql(1) est aussi utile pour lister les rôles
existants.
Afin d'amorcer le système de base de données, un système récemment
installé contient toujours un rôle prédéfini. Ce rôle est un
superutilisateur et aura par défaut le même nom que l'utilisateur
du système d'exploitation qui a initialisé le groupe de bases de
données (à moins que cela ne soit modifié en lançant la commande
initdb
). Par
habitude, ce rôle sera nommé postgres.
Pour créer plus de rôles, vous devez d'abord vous connecter en tant
que ce rôle initial.
Chaque connexion au serveur de la base de données est fait au nom
d'un certain rôle et ce rôle détermine les droits d'accès initiaux
pour les commandes lancées sur cette connexion. Le nom du rôle à
employer pour une connexion à une base particulière est indiqué par
le client initialisant la demande de connexion et ce, de la manière
qui lui est propre. Par exemple, le programme
psql
utilise l'option de ligne de
commandes -U pour préciser sous quel rôle
il se connecte. Beaucoup d'applications (incluant
createuser
et
psql
) utilisent par défaut le nom
courant de l'utilisateur du système d'exploitation. Par
conséquence, il peut souvent être pratique de maintenir une
correspondance de nommage entre les rôles et les utilisateurs du
système d'exploitation.
La configuration de l'authentification du client détermine avec
quel rôle de la base, la connexion cliente donnée se connectera,
comme cela est expliqué dans le Chapitre 20,
Authentification du client (donc, un client n'est pas
nécessairement obligé de se connecter avec le rôle du même nom que
son nom d'utilisateur dans le système d'exploitation ; de la même
façon que le nom de connexion d'un utilisateur peut ne pas
correspondre à son vrai nom). Comme le rôle détermine l'ensemble
des droits disponibles pour le client connecté, il est important de
configurer cela soigneusement quand un environnement
multi-utilisateurs est mis en place.