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.
- 6 × 4profils × opérations
- 24tests nommés
- 53tests au total
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.
