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;
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_monitorpg_read_all_settingspg_read_all_statspg_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_datapg_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_filespg_write_server_filespg_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.