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 |
|---|---|---|
| Verwalten (manage) | sqz_masterdata_manage | Tabellen anlegen, ändern und löschen; Spalten und Schema pflegen; die Berechtigungen der Tabelle pflegen |
| Bearbeiten (edit) | sqz_masterdata_edit | Datenzeilen einer Tabelle anlegen, ändern und löschen (inkl. CSV- und Batch-Upload) |
Die meisten lesenden Zugriffe (Tabellen auflisten, Spalten anzeigen, Zeilen suchen) sind nicht durch diese Berechtigungen geschützt und stehen jedem authentifizierten Benutzer offen. Ausnahme: der CSV-Export – dieser wird gesondert geprüft (siehe Abschnitt „Sonderfall: CSV-Export").
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 die schreibenden Endpunkte (Tabelle verwalten bzw. Daten bearbeiten) 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.
Der CSV-Export folgt dieser Reihenfolge nicht – siehe den nächsten Abschnitt.
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.
Sonderfall: CSV-Export
Der CSV-Export einer Tabelle (GET /masterData/tables/{tableId}/csv) wird bei aktiviertem Feature-Flag gesondert und abweichend von der übrigen Zugriffslogik geprüft:
- Der Export ist nur erlaubt, wenn der Benutzer eine Rolle besitzt, für die in dieser Tabelle eine tabellenspezifische Berechtigung mit
canEdit = truehinterlegt ist. Andernfalls antwortet die API mit HTTP 403. - Abweichend von den schreibenden Endpunkten wird hierbei der globale Scope
sqz_masterdata_editnicht berücksichtigt – ein rein global vergebenes Bearbeiten-Recht genügt für den CSV-Export also nicht. - Ebenso genügt
canManageallein nicht; geprüft wird ausschließlichcanEdit.
Erhält ein Benutzer bei aktiviertem Feature-Flag ein HTTP 403 beim CSV-Export, obwohl er die Tabelle verwalten oder anderweitig darauf zugreifen kann, fehlt ihm mit hoher Wahrscheinlichkeit ein canEdit-Eintrag für genau diese Tabelle. Weisen Sie einer seiner Rollen eine Tabellen-Berechtigung mit canEdit = true zu.
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
No comments to display
No comments to display