Documentation PostgreSQL 14.22 » Administration du serveur » Rôles de la base de données » Rôles prédéfinis

Précédent | Niveau supérieur | Suivant
22.4. Supprimer des rôles | Sommaire | 22.6. Sécurité des fonctions

## 22.5. Rôles prédéfinis

PostgreSQL provides a set of predefined roles that provide access to certain, commonly needed, privileged capabilities and information. Administrators (including roles that have the `CREATEROLE` privilege) can `GRANT` these roles to users and/or other roles in their environment, providing those users with access to the specified capabilities and information.

The predefined roles are described in Tableau 22.1. Note that the specific permissions for each of the roles may change in the future as additional capabilities are added. Administrators should monitor the release notes for changes.

Tableau 22.1. Rôles prédéfinis

Rôle | Accès autorisé
--- | ---
pg_read_all_data | Lit toutes les données (tables, vues, séquences), comme si le rôle avait le droit `SELECT` sur ces objets, et le droit `USAGE` sur tous les schémas, même sans les avoir explicitement. Ce rôle n'a pas l'attribut `BYPASSRLS` de configuré. Si RLS est utilisé, un administrateur pourrait vouloir ajouter `BYPASSRLS` sur les rôles ayant cet accès.
pg_write_all_data | Écrit toutes les données (tables, vues, séquences), comme si le rôle avait les droits `INSERT`, `UPDATE`, and `DELETE` sur ces objets, et le droit `USAGE` sur tous les schémas, même sans les avoir explicitement. Ce rôle n'a pas l'attribut `BYPASSRLS` de configuré. Si RLS est utilisé, un administrateur pourrait vouloir ajouter `BYPASSRLS` sur les rôles ayant cet accès.
pg_read_all_settings | Lit toutes les variables de configuration, y compris celles normalement visibles des seuls super-utilisateurs.
pg_read_all_stats | Lit toutes les vues pg_stat_* et utilise plusieurs extensions relatives aux statistiques, y compris celles normalement visibles des seuls super-utilisateurs.
pg_database_owner | None. Membership consists, implicitly, of the current database owner.
pg_stat_scan_tables | Exécute des fonctions de monitoring pouvant prendre des verrous `ACCESS SHARE` sur les tables, potentiellement pour une longue durée.
pg_monitor | Lit 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_backend | Envoie un signal à un autre processus serveur (par exemple pour annuler une requête ou fermer une session).
pg_read_server_files | Autoriser 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_files | Autoriser 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_program | Autoriser 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.

The `pg_database_owner` role has one implicit, situation-dependent member, namely the owner of the current database. The role conveys no rights at first. Like any role, it can own objects or receive grants of access privileges. Consequently, once `pg_database_owner` has rights within a template database, each owner of a database instantiated from that template will exercise those rights. `pg_database_owner` cannot be a member of any role, and it cannot have non-implicit members.

Le rôle `pg_signal_backend` a pour but de permettre aux administrateurs d'autoriser des rôles de confiance mais non super-utilisateurs à 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 super-utilisateur. 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 super-utilisateur, 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 super-utilisateur. 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;