Files
sql/postgresql-entrypoint-initdb.d/10_postgrest.sql

37 lines
1.3 KiB
MySQL
Raw Normal View History

2025-10-13 11:06:48 +02:00
create role postgrest nosuperuser nocreatedb nocreaterole noinherit noreplication nobypassrls
login password '9012';
2025-10-13 07:49:20 +02:00
2025-10-13 11:06:48 +02:00
-- 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;
2025-10-14 23:27:54 +02:00
grant usage
on schema public
to anonyme;
2025-10-13 11:06:48 +02:00
2025-10-14 23:27:54 +02:00
-- 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;