PostgreSQL : connaître les droits d'un utilisateur sur les tables d'une base de données

Le par Anthony Domps.

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.