PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 18 beta 2 » Administration du serveur » Rôles de la base de données » Rôles prédéfinis

21.5. Rôles prédéfinis #

PostgreSQL fournit un ensemble de rôles prédéfinis qui permettent d'accéder à certaines fonctionnalités et informations privilégiées, couramment nécessaires. Les administrateurs (y compris les rôles qui ont le privilège CREATEROLE) peuvent octroyer (GRANT) ces rôles aux utilisateurs et/ou à d'autres rôles dans leur environnement, fournissant à ces utilisateurs un accès aux fonctionnalités et informations spécifiées. Par exemple :

GRANT pg_signal_backend TO admin_user;

Avertissement

Il est important de faire attention quand on donne ces rôles à s'assurer qu'ils sont uniquement utilisés si nécessaire et avec la compréhension que ces rôles donnent accès à des informations importantes.

Les rôles prédéfinis sont décrits ci-dessous. Notez que les autorisations spécifiques pour chacun des rôles peuvent changer à l'avenir à mesure que des fonctionnalités supplémentaires sont ajoutées. Les administrateurs doivent surveiller les notes de version pour les changements.

pg_checkpoint #

pg_checkpoint permet l'exécution de la commande CHECKPOINT.

pg_create_subscription #

pg_create_subscription donne à ses membres le droit CREATE sur la base pour lancer un CREATE SUBSCRIPTION.

pg_database_owner #

pg_database_owner a toujours exactement un membre : le propriétaire actuel de la base de données. Ce droit ne peut pas être donné. Néanmoins, comme tout autre rôle, il peut posséder des objets et avoir des droits d'accès. En conséquence, une fois que pg_database_owner a des droits dans une base modèle, chaque propriétaire d'une base créée avec ce modèle possèdera ces droits. Initialement, ce rôle est propriétaire du schéma public, donc chaque propriétaire de base impose l'utilisation locale de ce schéma.

pg_maintain #

pg_maintain permet l'exécution des commandes VACUUM, ANALYZE, CLUSTER, REFRESH MATERIALIZED VIEW, REINDEX et LOCK TABLE sur toutes les relations, comme si le rôle avait le droit MAINTAIN sur ces objets.

pg_monitor
pg_read_all_settings
pg_read_all_stats
pg_stat_scan_tables #

Ces rôles permettent à des administrateurs de configurer facilement un rôle dans le but de superviser le serveur de bases de données. Ils donnent un ensemble de droits permettant au rôle de lire différents paramètre de configuration, différentes statistiques, et autres informations systèmes normalement restreintes aux superutilisateurs.

pg_monitor permet la lecture de différentes vues systèmes de supervisions ainsi que l'exécution de fonctions de supervision. Ce rôle est un membre de pg_read_all_settings, pg_read_all_stats et pg_stat_scan_tables.

pg_read_all_settings permet la lecture des paramètres de configuration, même ceux normalement visibles qu'aux superutilisateurs.

pg_read_all_stats permet la lecture des vues pg_stat_* et l'utilisation d'extensions relatives à la supervision, même celles normalement visibles que par les superutilisateurs.

pg_stat_scan_tables permet l'exécution de fonctions de supervision qui pourraient prendre des verrous de niveau ACCESS SHARE sur les tables, potentiellement sur un temps long (c'est-à-dire pgrowlocks(text) dans l'extension pgrowlocks).

pg_read_all_data
pg_write_all_data #

pg_read_all_data autorise la lecture de toutes les données (tables, vues et séquences) comme si le rôle avait le droit SELECT sur ces objets et le droit USAGE sur tous les schémas. Ce rôle ne peut pas contourner les politiques de sécurité au niveau ligne (RLS). Si RLS est utilisé, un administrateur pourrait vouloir configurer BYPASSRLS pour les rôles membres du rôle pg_read_all_data.

pg_read_all_data autorise la lecture de toutes les données (tables, vues et séquences) comme si le rôle avait les droits INSERT, UPDATE et DELETE sur ces objets et le droit USAGE sur tous les schémas. Ce rôle ne peut pas contourner les politiques de sécurité au niveau ligne (RLS). Si RLS est utilisé, un administrateur pourrait vouloir configurer BYPASSRLS pour les rôles membres du rôle pg_read_all_data.

pg_read_server_files
pg_write_server_files
pg_execute_server_program #

Ces rôles ont pour but de permettre à des administrateurs d'avoir des rôles de confiance, non superutilisateurs, pouvant accéder à des fichiers et lancer des programmes sur le serveur de bases de données en tant que l'utilisateur qui exécute les processus serveurs. Ils contournent toutes les vérifications de droits au niveau base lors de l'accès aux fichiers et peuvent être utiliser pour obtenir un accès superutilisater. De ce fait, une attention doit être portée aux personnes à qui ces droits sont donnés.

pg_read_server_files permet de lire des fichiers dans tout répertoire auquel le serveur de bases de données a accès en utilisant COPY et d'autres fonctions d'accès aux fichiers.

pg_write_server_files permet d'écrire dans des fichiers dans tout répertoire auquel le serveur a accès en utilisant COPY et d'autres fonctions d'accès aux fichiers.

pg_execute_server_program permet d'exécuter des programmes sur le serveur en tant que l'utilisateur qui exécute le serveur, en utilisant COPY et d'autres fonctions qui permettent l'exécution de programmes sur le serveur.

pg_signal_autovacuum_worker #

pg_signal_autovacuum_worker permet de signaler des workers d'autovacuum pour annuler le nettoyage par VACUUM de la table ou pour terminer sa session. Voir Section 9.28.2.

pg_signal_backend #

pg_signal_backend permet de signaler un autre processus serveur pour annuler une requête ou terminer sa session. Notez que ce rôle n'a pas le droit de signaler des processus où un superutilisateur est connecté. Voir Section 9.28.2.

pg_use_reserved_connections #

pg_use_reserved_connections autorise l'utilisation de slots de connexion réservés via reserved_connections.