PostgreSQLLa base de données la plus sophistiquée au monde.
Documentation PostgreSQL 13.18 » Administration du serveur » Rôles de la base de données » Rôles par défaut

21.5. Rôles par défaut

PostgreSQL fournit une série de rôles par défaut qui donnent accès à certaines informations et fonctionnalités privilégiées, habituellement nécessaires. Les administrateurs peuvent autoriser ces rôles à des utilisateurs et/ou à d'autres rôles de leurs environnements, fournissant à ces utilisateurs les fonctionnalités et les informations spécifiées.

Les rôles par défaut sont décrits dans Tableau 21.1. A noter que les permissions spécifiques pour chacun des rôles par défaut peuvent changer dans le futur si des fonctionnalités supplémentaires sont ajoutées. Les administrateurs devraient surveiller les notes de versions pour en connaitre les changements.

Tableau 21.1. Rôles par défaut

RôleAccès autorisé
pg_read_all_settingsLit toutes les variables de configuration, y compris celles normalement visibles des seuls super-utilisateurs.
pg_read_all_statsLit toutes les vues pg_stat_* et utilise plusieurs extensions relatives aux statistiques, y compris celles normalement visibles des seuls super-utilisateurs.
pg_stat_scan_tablesExécute des fonctions de monitoring pouvant prendre des verrous verrous ACCESS SHARE sur les tables, potentiellement pour une longue durée.
pg_monitorLit et exécute plusieurs vues et fonctions de monitoring. Ce rôle est membre de pg_read_all_settings, pg_read_all_stats et pg_stat_scan_tables.
pg_signal_backendEnvoie un signal à un autre processus serveur (par exemple pour annuler une requête ou fermer une session).
pg_read_server_filesAutoriser la lecture de fichiers sur tous les emplacements accessibles par le serveur de bases de données avec COPY et les autres fonctions d'accès de fichiers.
pg_write_server_filesAutoriser l'écriture de fichiers sur tous les emplacements accessibles par le serveur de bases de données avec COPY et les autres fonctions d'accès de fichiers.
pg_execute_server_programAutoriser l'exécution de programmes sur le serveur de bases de données en tant que l'utilisateur qui exécute le moteur de bases de données, avec COPY et les autres fonctions qui permettent l'exécution d'un programme sur le serveur.

Les rôles pg_monitor, pg_read_all_settings, pg_read_all_stats et pg_stat_scan_tables ont pour but de permettre aux administrateurs de configurer aisément un rôle en vu de superviser le serveur de base de données. Ils accordent un ensemble de privilèges permettant au rôle de lire plusieurs paramètres de configuration, statistiques et information système normalement réservés aux super-utilisateurs.

Le rôle pg_signal_backend a pour but de permettre aux administrateurs d'autoriser des rôles de confiance mais non superutilisateurs à envoyer des signaux à d'autres processus. Actuellement, ce rôle active l'envoi de signaux pour annuler une requête exécutée par un autre processus ou pour terminer une session. Néanmoins, un utilisateur membre de ce rôle ne peut pas envoyer ce type de signaux à un processus appartenant à un superutilisateur. Voir Section 9.27.2.

Les rôles pg_read_server_files, pg_write_server_files et pg_execute_server_program ont pour but de permettre aux administrateurs de disposer de rôles de confiance, mais non superutilisateur, capables d'accéder à des fichiers et d'exécuter des programmes sur le serveur de bases de données en tant que l'utilisateur qui exécute le moteur de bases de données. Comme ces rôles sont capables d'accéder à tout fichier sur le système de fichiers du serveur, ils contournent toutes les vérifications d'accès au niveau de la base de données lors d'accès directs aux fichiers. Ils peuvent utiliser cela pour obtenir un accès de niveau superutilisateur. De ce fait, une attention toute particulière doit être prise lors de l'affectation de ces rôles aux utilisateurs.

On portera une attention particulière en accordant ces rôles afin de garantir qu'ils ne sont utilisés qu'en cas de nécessiter et en comprenant que ces rôles donnent accès à des informations importantes.

Les administrateurs peuvent autoriser l'accès à ces rôles aux utilisateurs en utilisant la commande GRANT :

GRANT pg_signal_backend TO admin_user;