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_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.