Sécurité & RBAC
Row-Level Security natif Postgres, rôles prédéfinis, RBAC multi-tenant, audit logs. Vos règles vivent dans la base — testables, versionnées, impossibles à contourner côté client.
Aurabase utilise le Row-Level Security (RLS)natif de PostgreSQL. Cela signifie que vos règles d'accès sont écrites en SQL, stockées dans la base, appliquées à chaque requête — y compris celles faites par le SDK, PostgREST, ou psql direct.
Contourner une policy est impossible côté client. Le gateway valide chaque JWT avant d'ouvrir une connexion Postgres avec le rôle approprié. Les claims (auth.uid(), auth.role(), auth.tenant()) sont injectés via request.jwt.claims — non modifiables depuis une requête SQL.
alter table ... enable row level security est la première chose à faire après create table.Chaque requête suit le même chemin. Le gateway décode le JWT, vérifie sa signature (JWKS tournant RS256), extrait les claims, ouvre une connexion Postgres avec SET LOCAL role + SET LOCAL request.jwt.claims. Toutes les policies qui référencent auth.*() utilisent ces claims.
Les policies sont attachées à une table + une opération (SELECT/INSERT/UPDATE/DELETE) + un rôle. Plusieurs policies sur la même paire sont combinées en OR. Utilisez using pour filtrer les lignes existantes, with check pour valider les nouvelles valeurs.
pg_prove. Un fichier rls_posts.sql par table, exécuté en CI à chaque migration. Voir le guide RLS.Les rôles applicatifs (admin, editor, viewer, billing…) sont définis dans project_{uuid}_auth.roles. Chaque utilisateur peut avoir N rôles. L'auth-server injecte roles dans le JWT, et auth.has_role('admin') devient utilisable dans vos policies.
Chaque événement sécurité est logué dans project_{uuid}_auth.auth_audit_log : signin, signout, password_change, mfa_enroll, role_granted, service_role_access, failed_auth. Rétention 30 jours sur Pro, 2 ans sur Enterprise.
/docs/compliancepour les schémas d'événement détaillés.