Donner les droits d'accès à un schéma postgresql

Il s'agit, ici, de donner des droits d'accès, soit en lecture, soit en lecture-écriture, à des groupes, sur l'ensemble des tables d'un schéma, dans une base postgresql.

Rappel des commandes de création de groupes et de logins

Ici, l'identification est sous-traitée à un serveur ldap - explications fournies dans cette page : Sous-traiter l'identification postgresql à un serveur ldap

create role "prenom.nom" LOGIN INHERIT VALID UNTIL '31-12-2050';
create role base_rw role "prenom.nom", "prenom1.nom1";
create role base_r role "prenom3.nom3";

Droits attribués

Les commandes doivent être tapées en étant connecté dans la base de données.

En lecture

grant usage on schema public to group base_r;
grant select on all tables in schema public to group base_r;
grant execute on all functions in schema public to group base_r;

En écriture

grant usage on schema public to group base_rw;
grant select, insert, update, delete on all tables in schema public to group base_rw;
grant all on all functions in schema public to group base_rw;
grant all on all sequences in schema public to group base_rw;

Définir les droits par défaut

À adapter aux schémas, aux droits attribués, aux groupes, etc.). Ne s'applique que pour les objets créés par la suite dans la base

alter default privileges in schema public grant select on tables to group base_r;
alter default privileges in schema public grant execute on  functions to group base_r;