ADR-0053: Rollenkatalog und Systemadmin-Impersonation
- Status: accepted
- Datum: 2026-09-03
- Phase: Multi-Tenant / Auth
- Bezug: ADR-0051, ADR-0052
- Ändert: ADR-0051 (kein
role=system_admin; Sysadmin mit Org-Kontext = Org-Writer), ADR-0052 (Org-Admin sieht nicht alle Projekte)
Kontext
Rollen und Rechte waren hart verdrahtete Capability-Flags aus role + is_system_admin. Gewünscht sind vier Kernrollen (Systemadmin, Organisationsadmin, Mitarbeiter, Kunde), ein pflegbarer Permission-Katalog, Org-eigene Zusatzrollen und ein Systemadmin, der ohne Impersonation keine Projekte/Schemata/Daten sieht.
Entscheidung
- Permission-Katalog in der Control-DB (
permissions,app_roles,role_permissions). Scopesystemvsorg. - Builtin-Rollen:
system_admin(platform,tenant_idnull); pro Tenantorg_admin,staff,customer. Org-Admins dürfen Org-Rollen anlegen und Org-Permissions zuweisen. app_users.rolespeichert den Role-Code;is_system_adminbleibt synchron für Queries. Fachrollenauthority/foremanentfallen (Migration →staff).- Systemadmin ohne Impersonation: nur System-Permissions.
X-Tenant-Idallein gewährt keine Org-Data-Rechte. - Impersonation:
POST /auth/impersonate/DELETE /auth/impersonate— Systemadmin agiert als Org-Admin einer Orga (Session-Flag). - Projektzugriff: Org-Admin (
manage_projects) sieht und verwaltet alle Org-Projekte. Mitarbeiter/Kunden brauchen weiterhinproject_membersfür Datenzugriff. - Bootstrap: Systemadmin (
LINETRA_BOOTSTRAP_ADMIN_*) und Org-Admin (LINETRA_BOOTSTRAP_ORG_ADMIN_*) sind getrennte Konten; Bootstrap-Orga heißt standardmäßig Nasarek GIS.
Begründung
Getrennte System-/Org-Ebenen verhindern, dass Plattformoperatoren Fachdaten sehen, und erlauben Org-Admins lokale Rechte ohne Casbin. Impersonation ist der bewusste Übergang in den Org-Kontext.
Folgen
- Settings → Berechtigungen (System- vs. Org-Sektion).
- Breaking: Altrollen-Codes und Sysadmin-mit-Tenant-als-Writer.
- Publish-Flag an Datensätzen fehlt noch; Permissions
view_published_records/view_unpublished_recordssind Caps für spätere Filter.