PostgreSQL : connaître les droits d'un utilisateur sur les tables d'une base de données
PostgreSQL permet de gérer finement les permissions grâce aux rôles et aux privilèges.
Pour connaître les droits accordés à un utilisateur sur les tables d'une base de données,
la vue information_schema.table_privileges fournit une vision simple et lisible.
Afficher les droits d'un utilisateur
La requête suivante permet de lister les privilèges associés à l'utilisateur user :
SELECT *
FROM information_schema.table_privileges
WHERE grantee = 'user';
Comprendre le résultat
La vue table_privileges retourne notamment les informations suivantes :
| Colonne | Description |
|---|---|
grantee |
Utilisateur ou rôle auquel le droit est attribué. |
table_schema |
Schéma contenant la table. |
table_name |
Nom de la table concernée. |
privilege_type |
Type de privilège accordé. |
is_grantable |
Indique si l'utilisateur peut transmettre ce droit à un autre rôle. |
Vérifier un droit précis sur une table
Si votre besoin est simplement de vérifier si un utilisateur peut effectuer une action
précise sur une table (lecture, insertion, modification ou suppression), PostgreSQL fournit
la fonction has_table_privilege().
Pour une approche détaillée avec des exemples d'utilisation, consultez l'article : Vérifier les droits d'un utilisateur sur une table PostgreSQL.
À savoir
Les droits peuvent être attribués directement à un utilisateur ou être hérités depuis un rôle PostgreSQL. Pour un audit complet, il faut également vérifier les appartenances aux rôles ainsi que les permissions sur les bases, schémas et séquences.