Worum es geht
Jedes Modell hat Rollen. Bevor CDMS eine Operation ausführt, prüft es, ob die passende Rolle im Token der Person steht. Fehlt sie, antwortet CDMS mit 403 missing-permission|<rolle>.
Es gibt zwei Arten von Modellrollen:
- Die Basisrolle heißt wie das Modell, z. B.
audit-question. Sie erlaubt jede Operation, für die nichts Strengeres festgelegt ist. - Eine Aktionsrolle hängt die Operation an, z. B.
audit-question-read. Es gibt sie nur für Operationen, die du im Hub als rollenpflichtig markiert hast.
Wie die Namen entstehen, steht unter Wie Rollennamen entstehen.
Welche Operation welche Rolle verlangt
Im Hub markierst du im Reiter Berechtigungen die Operationen CREATE, READ, UPDATE und DELETE. Jede markierte Operation bekommt ihre Aktionsrolle, alle anderen verlangen die Basisrolle.
| Operation | Endpunkt | Verlangte Rolle |
|---|---|---|
| Anlegen | POST /create, Upload beim Anlegen | Anlegerolle |
| Lesen | POST /read/{id}, GET /read/{id} | Leserolle |
| Suchen | POST /query | Leserolle |
| Ersetzen | PUT /update/{id} | Änderungsrolle |
| Ändern | PATCH /update/{id}, Upload beim Ändern | Änderungsrolle, denn PATCH hat keine eigene Rolle |
| Löschen | DELETE /delete/{id} | Löschrolle |
| Herunterladen | GET /{id}/file | erst Leserolle (das Objekt wird gelesen), dann Download-Rolle |
| Historie lesen | POST /{id}/history | Leserolle und Historienrolle |
| Zurücksetzen | POST /{id}/rollback/{revision} | Rollback-Rolle |
Download, Historie und Rollback lassen sich im Hub nicht einzeln markieren. Sie verlangen deshalb die Basisrolle.
| READ im Hub markiert | Endpunkt mit eigener Rolle | Endpunkt mit publicAccess | Verlangte Rolle |
|---|---|---|---|
| nein | nein | nein | audit-question |
| ja | nein | nein | audit-question-read |
| – | ja, z. B. report-reader | nein | report-reader |
| – | – | ja | keine Rolle, jede angemeldete Person |
Varianten
Wann: im Hub keine Operation markiert
-
1Buildsetzt für jede Operation die Basisrolle
audit-question -
2CDMSprüft bei jeder Operation dieselbe Rolle
Ergebnis: Eine Rolle für alles. Einfach, aber ohne Unterschied zwischen Lesen und Schreiben.
Wann: im Hub z. B. READ markiert
-
1Buildsetzt für READ
audit-question-read, für alle anderen Operationen weiteraudit-question -
2CDMSprüft beim Lesen und Suchen nur noch
audit-question-read -
3CDMSprüft beim Anlegen, Ändern und Löschen weiter
audit-question
Ergebnis: Leser bekommen audit-question-read, Bearbeiter audit-question und audit-question-read, wenn sie auch lesen sollen.
Wann: Modelldatei (YAML): Endpunkt mit roleRequired: <name>
-
1Buildübernimmt den Namen unverändert als Rolle für diese Operation
-
2CDMSprüft genau diesen Namen
Ergebnis: Der eigene Name gilt vor Basis- und Aktionsrolle. Im Hub gibt es diese Angabe nicht.
Wann: Modelldatei (YAML): Endpunkt mit publicAccess: true
-
1Buildsetzt für diese Operation keine Rolle
-
2CDMSüberspringt die Rollenprüfung
Ergebnis: Jede Person mit gültigem Token darf die Operation ausführen. Ohne Token geht es trotzdem nicht, siehe Zugriff ohne Token. Die Filter der Zeilen-Ebene gelten weiter.
Woher die Rollen kommen
Die Rollen einer Person stehen in ihrem Token. CIAS liest sie bei jeder Anfrage aus und bildet daraus die effektiven Rollen: Gehört eine Person mehreren Mandanten an und hat die Organisation eigene Rollen, gelten die Rollen des aktiven Mandanten. CDMS prüft nur gegen diese effektiven Rollen. Siehe Effektive Rollen: global oder im Mandanten.
Abstrakte Modelle
Ein abstraktes Modell leitet jede Anfrage an seinen Untertyp weiter. Geprüft werden dann die Rollen des Untertyps:
- Anlegen, Lesen, Ändern, Löschen über
/crm/kunde/…verlangen die Rollen vonprivatkundeoderfirmenkunde, je nachdem, welcher Typ betroffen ist. - Eine Suche über das abstrakte Modell liest jeden Treffer über seinen Untertyp. Die Person braucht die Leserolle jedes Untertyps, der in den Treffern vorkommt.
- Die Rollen des abstrakten Modells selbst gelten, wenn ein anderes Modell über eine Beziehung auf das abstrakte Modell zeigt.
Siehe Abstrakte Modelle.
Fallen
Wie es weitergeht
- Wie die Namen gebildet werden: Wie Rollennamen entstehen
- Rechte, die nur über eine Beziehung gelten: Rechte auf Beziehungen (Feldrollen)
- Was ohne Strict Mode bei fehlender Rolle passiert: Strict Mode