Aller au contenu
EN
Retour

immo-grant

Des annonces immobilières dont le vrai sujet est l'autorisation : chaque règle d'accès vit dans le schéma PostgreSQL.

Projet publicSvelteKit, TypeScript, Supabase, PostgreSQL, RLS, PL/pgSQL, Vitest, Playwright

Le problème

Une règle d'accès écrite dans l'application se contourne dès qu'un autre client parle à la base. Les mandats délégués, qui expirent, sont le cas où cette fuite coûte le plus cher.

L'approche retenue

Toutes les règles sont déclarées dans le schéma, en politiques RLS : aucune n'est réimplémentée dans l'application. La récursion entre politiques passe par une fonction SECURITY DEFINER, et ce que WITH CHECK ne sait pas exprimer passe par des privilèges de colonne.

La preuve

Une matrice d'autorisation de 24 cellules, chacune couverte par un test nommé, exécutée contre le schéma appliqué tel quel dans un PostgreSQL en processus (PGlite), sans conteneur ni service externe.

La page d'accueil de la démo immo-grant
L'autorisation vit dans le schéma
RôlesActionsMatrice24 cellulesPolitiques RLSdans PostgreSQL24 tests nommésschéma appliquédéclareexécutés contre