27536 shaares
Dans une application Symfony multi-tenant, un rôle PostgreSQL ne possédant aucune table peut néanmoins contourner les politiques Row-Level Security (RLS) s’il hérite des privilèges du propriétaire. L’auteur montre pourquoi un contrôle fondé sur current_user et session_user passe à côté de cette faille et recommande pg_has_role pour inspecter les appartenances. Il détaille une configuration à trois rôles avec GRANT ... WITH INHERIT FALSE, SET TRUE, puis souligne un piège de Doctrine DBAL : SET LOCAL ROLE et le contexte du tenant doivent être appliqués dans une transaction englobant les lectures.