diff --git a/.agents/skills/grand-functions/references/security.md b/.agents/skills/grand-functions/references/security.md index 0407ab5..f2feeaf 100644 --- a/.agents/skills/grand-functions/references/security.md +++ b/.agents/skills/grand-functions/references/security.md @@ -16,4 +16,5 @@ RLS ist auf Datenbankebene in Postgres implementiert und erzwingt Datenisolierun - **Systembenutzer (`users`) & Rollen-Schutz**: - Authentifizierte Nutzer dürfen nur ihr eigenes Profil lesen. + - Admins dürfen alle Benutzer lesen. Zur Vermeidung von unendlichen RLS-Rekursionen auf der Tabelle `users` wird die Admin-Zuweisung über die Security-Definer-Funktion `public.is_admin(user_id)` geprüft, welche RLS auf Datenbank-Ebene umgeht. - Rollenschutz-Trigger (`check_user_role_escalation`): Jegliche Änderung der Spalte `role` oder Zuweisung der Rolle `'admin'` ist auf API-Ebene für normale Nutzer gesperrt. Updates/Inserts der Rolle werden ausschließlich von der `service_role` (Backend Admin-Client) akzeptiert, um Privilegien-Eskalation zu verhindern.