Berechtigungen für Stammdatentabellen
Stammdatentabellen können in Squeeze mit einem feingranularen, rollenbasierten Berechtigungssystem geschützt werden. Damit lässt sich pro Tabelle und pro Rolle festlegen, wer die Daten einer Tabelle bearbeiten und wer die Tabelle selbst verwalten darf.
Dieses feingranulare System ist nur aktiv, wenn das Feature-Flag masterDataTablePermissions für den Mandanten aktiviert ist (siehe Features verwalten). Ist das Flag deaktiviert (Standard), gelten ausschließlich die globalen Berechtigungen (siehe unten).
Zwei Berechtigungsstufen
Das System unterscheidet zwei Aktionen auf einer Stammdatentabelle. Jede ist an eine globale Berechtigung (einen Scope, den eine Rolle erhalten kann) gekoppelt:
| Stufe | Globale Berechtigung (Scope) | Erlaubt |
|---|---|---|
sqz_masterdata_manage | Tabellen anlegen, ändern und löschen; Spalten und Schema pflegen; die Berechtigungen der Tabelle pflegen | |
sqz_masterdata_edit | Datenzeilen einer Tabelle anlegen, ändern und löschen (inkl. CSV- und Batch-Upload) |
Lesende Zugriffe (Tabellen auflisten, Spalten anzeigen, Zeilen suchen, CSV-Export) sind **nicht**nicht durch diese Berechtigungen geschützt und stehen jedem authentifizierten Benutzer offen.
Verhalten bei deaktiviertem Feature-Flag (Standard)
Ohne aktiviertes Flag entscheidet ausschließlich die globale Berechtigung:
- Verwalten-Endpunkte erfordern den Scope
sqz_masterdata_manage. - Bearbeiten-Endpunkte erfordern den Scope
sqz_masterdata_edit.
Eine tabellen- oder rollenspezifische Feinsteuerung findet nicht statt. Bereits hinterlegte Tabellen-Berechtigungen bleiben ohne Wirkung, bis das Flag aktiviert wird.
Verhalten bei aktiviertem Feature-Flag
Ist das Flag aktiv, wird der Zugriff auf eine Tabelle in dieser Reihenfolge entschieden:
- Globale Berechtigung zuerst: Besitzt eine Rolle des Benutzers den globalen Scope (
sqz_masterdata_managebzw.sqz_masterdata_edit), ist der Zugriff auf alle Tabellen erlaubt. Die globale Berechtigung wirkt damit wie eine „Wildcard". - Sonst tabellenspezifisch: Andernfalls werden die für die betroffene Tabelle hinterlegten Berechtigungen geprüft. Hat der Benutzer eine Rolle, für die in dieser Tabelle das passende Recht (
canEditbzw.canManage) gesetzt ist, wird der Zugriff gewährt. - Andernfalls verweigert: Trifft nichts davon zu, wird der Zugriff mit „nicht autorisiert" (HTTP 403) abgelehnt.
Die tabellenspezifischen Berechtigungen sind also additiv zur globalen Berechtigung: Der globale Scope gibt Vollzugriff auf alle Tabellen, während tabellenspezifische Einträge einzelnen Rollen gezielt Rechte für einzelne Tabellen einräumen.
Das Tabellen-Berechtigungsobjekt
Eine tabellenspezifische Berechtigung gilt jeweils für die Kombination aus einer Tabelle und einer Rolle:
| Feld | Typ | Bedeutung |
|---|---|---|
tableId | integer | ID der Stammdatentabelle |
roleId | integer | ID der Rolle, für die die Berechtigung gilt |
canEdit | boolean | Die Rolle darf die Datenzeilen der Tabelle bearbeiten |
canManage | boolean | Die Rolle darf die Tabelle verwalten (Struktur, Spalten, Schema und Berechtigungen) |
Das Pflegen der Berechtigungen einer Tabelle zählt selbst zu „Verwalten". Nur wer canManage für die Tabelle (bzw. den globalen Scope sqz_masterdata_manage) besitzt, kann deren Berechtigungen ändern.
Konfiguration über die API
Die tabellenspezifischen Berechtigungen werden über die REST-API gepflegt. Der Request-Body entspricht dem oben beschriebenen Objekt (roleId, canEdit, canManage).
Lesen:
GET /masterData/tables/{tableId}/permissions– alle Berechtigungen einer TabelleGET /masterData/tables/{tableId}/permissions/role/{roleId}– Berechtigung einer bestimmten RolleGET /masterData/tables/{tableId}/permissions/user/{userId}– effektive Rechte eines Benutzers
Schreiben (erfordert Verwalten-Recht):
POST /masterData/tables/{tableId}/permissions– Berechtigung anlegenPUT /masterData/tables/{tableId}/permissions– Berechtigung aktualisierenDELETE /masterData/tables/{tableId}/permissions– Berechtigung löschenPOST/PUT/DELETE /masterData/tables/{tableId}/permissions/role/{roleId}– rollenspezifische Pflege
Verwandte Themen
- Features verwalten – Aktivierung des Feature-Flags
masterDataTablePermissions - Berechtigungskonzept – Gesamtüberblick der Rollen und Berechtigungen (dort als
CRUD^Mgekennzeichnet) - Stammdaten ab Squeeze 2.5 – Grundlagen zu Stammdatentabellen