37 lines
1.3 KiB
SQL
37 lines
1.3 KiB
SQL
create role postgrest nosuperuser nocreatedb nocreaterole noinherit noreplication nobypassrls
|
|
login password '9012';
|
|
|
|
-- postgrest est le rôle utilisé par l'application pour se connecter à la base.
|
|
-- Il doit être configuré pour avoir un accès très limité.
|
|
-- Il s'agit d'un caméléon dont la tâche est de « devenir » un autre utilisateur pour servir des requêtes HTTP authentifiées.
|
|
|
|
-- Roles sans login. Il faut se connecter d'abord avec l'utilisateur postgrest.
|
|
-- Puis celui-ci usurpe une des identités suivantes suivant le role présent dans le JWT.
|
|
-- Lorsqu'une demande contient un JWT valide avec une revendication de rôle,
|
|
-- PostgREST passera au rôle de base de données avec ce nom pendant la durée de la demande HTTP avec la commande :
|
|
-- SET LOCAL ROLE adherent;
|
|
create role anonyme nologin;
|
|
create role adherent nologin;
|
|
|
|
-- L'utilisateur postgrest peut se connecter en tant que ...
|
|
grant anonyme to postgrest;
|
|
grant adherent to postgrest;
|
|
|
|
grant usage
|
|
on schema public
|
|
to anonyme;
|
|
|
|
-- Pour toutes les tables du schéma public
|
|
grant select
|
|
on all tables
|
|
in schema public
|
|
to anonyme;
|
|
|
|
-- Privilège par défaut pour que chaque nouvelle table créée dans public
|
|
-- donnera automatiquement le droit SELECT à anonyme.
|
|
alter default privileges
|
|
in schema public
|
|
grant select
|
|
on tables
|
|
to anonyme;
|