Chapitre 18. Rôles et privilèges des bases de données
On octobre 25, 2021 by adminLes rôles des bases de données sont conceptuellement complètement séparés des utilisateurs du système d’exploitation. En pratique, il pourrait être pratique de maintenir une correspondance, mais ce n’est pas nécessaire. Les rôles de base de données sont globaux dans une installation de cluster de base de données (et non par base de données individuelle). Pour créer un rôle, utilisez la commande SQL CREATE ROLE:
CREATE ROLE name;
name suit les règles relatives aux identifiants SQL : soit sans caractères spéciaux, soit entre guillemets. (En pratique, vous voudrez généralement ajouter des options supplémentaires, telles que LOGIN, à la commande. Plus de détails apparaissent ci-dessous). Pour supprimer un rôle existant, utilisez la commande analogue DROP ROLE:
DROP ROLE name;
Pour des raisons de commodité, les programmes createuser et dropuser sont fournis comme enveloppes autour de ces commandes SQL qui peuvent être appelées à partir de la ligne de commande du shell:
createuser namedropuser name
Pour déterminer l’ensemble des rôles existants, examinez le catalogue système pg_roles, par exemple
SELECT rolname FROM pg_roles;
La méta-commande \du du programme psql est également utile pour lister les rôles existants.
Pour amorcer le système de base de données, un système fraîchement initialisé contient toujours un rôle prédéfini. Ce rôle est toujours un « superutilisateur », et par défaut (sauf s’il est modifié lors de l’exécution de initdb), il aura le même nom que l’utilisateur du système d’exploitation qui a initialisé le cluster de base de données. Habituellement, ce rôle sera nommé postgres. Afin de créer d’autres rôles, vous devez d’abord vous connecter en tant que ce rôle initial.
Chaque connexion au serveur de base de données est effectuée au nom d’un certain rôle particulier, et ce rôle détermine les privilèges d’accès initiaux pour les commandes émises sur cette connexion. Le nom du rôle à utiliser pour une connexion particulière à la base de données est indiqué par le client qui initie la demande de connexion d’une manière spécifique à l’application. Par exemple, le programme psql utilise l’option de ligne de commande -U pour indiquer le rôle à utiliser pour la connexion. De nombreuses applications prennent par défaut le nom de l’utilisateur actuel du système d’exploitation (y compris createuser et psql). Par conséquent, il est souvent pratique de maintenir une correspondance de nommage entre les rôles et les utilisateurs du système d’exploitation.
L’ensemble des rôles de base de données sous lesquels une connexion client donnée peut se connecter est déterminé par la configuration de l’authentification du client, comme expliqué au Chapitre 20. (Ainsi, un client n’est pas nécessairement limité à se connecter en tant que rôle portant le même nom que son utilisateur de système d’exploitation, tout comme le nom de connexion d’une personne ne doit pas nécessairement correspondre à son vrai nom). Puisque l’identité du rôle détermine l’ensemble des privilèges disponibles pour un client connecté, il est important de le configurer soigneusement lors de la mise en place d’un environnement multi-utilisateurs.
Laisser un commentaire