CodamAIDocs
Themafertig

Die Realm-Rollen der Plattform

platform-admin, user, mail-template-admin, allowed-tenant-context-switch, allowed-user-context-switch, declaration-reader: wofür jede da ist und wer sie vergeben darf.

Ausprägungen
platform-adminusermail-template-adminallowed-tenant-context-switchallowed-user-context-switchdeclaration-reader

Worum es geht

Die meisten Rollen gehören einem Modul und gelten in einem Mandanten. Ein paar Rollen tun das nicht: Sie gelten überall und werden von der Plattform selbst geprüft, nicht von einem Modul. Das sind die Realm-Rollen der Plattform. In Keycloak liegen sie auf Realm-Ebene, im Token unter realm_access.roles.

Die sechs Rollen im Überblick

RolleWofürWer prüft sieIm RollenkatalogVergeben durch
platform-adminverwaltet die Plattform: alle Mandanten, alle Benutzer, den KatalogCIAS bei jeder Verwaltungsoperationja, PLATFORM, Delegation leernur ein Plattform-Administrator
userjede Person mit Konto; der Boden, kein Recht–ja, PLATFORMPlattform-Administrator; Registrierungen ohne Mandant vergeben sie als Startrolle
mail-template-adminden Wortlaut aller Mails ändern: die Standardfassungen und die jedes MandantenCIAS beim Bearbeiten von Mailvorlagenja, PLATFORMPlattform-Administrator
allowed-tenant-context-switchin einen fremden Mandanten wechselnFilterkette beim Header tenantneindirekt in Keycloak
allowed-user-context-switchim Namen einer anderen Person arbeiten, die das freigegeben hatFilterkette beim Header userneindirekt in Keycloak
declaration-readerdie Deklaration eines Moduls lesen, GET /cias/fetchdas Modul, etwa CDMSneindirekt in Keycloak, an das Konto, mit dem CIAS liest

Die Rollen im Einzelnen

Wofür jede Realm-Rolle da ist

Wann: Jemand muss Mandanten anlegen, Rollen definieren, Benutzer verwalten.

Welche Rollen als Plattform-Administrator zählen, legt die Installation im Code fest, nicht in einer Einstellung mit Standardwert. Im eigenständigen CIAS ist das platform-admin. Ein Plattform-Administrator darf jede Rolle vergeben und erfüllt jede Obergrenze. Die Rolle selbst wird nie delegiert: Ihre Delegationsliste ist leer, also vergibt sie nur ein anderer Plattform-Administrator.

Ergebnis: Die erste Person bekommt sie beim ersten Start, wenn die Installation das so einstellt, siehe unten.

Wann: Jede Person mit Konto.

Kein eigentliches Recht, sondern der Boden. Die Installation nennt sie als Realm-Rolle, die beim Start angelegt wird. Eine Registrierung ohne Mandant vergibt sie als Startrolle.

Ergebnis: Im Katalog als Plattformrolle, vergebbar durch platform-admin.

Wann: Jemand soll die Texte der Mails pflegen, ohne die Plattform zu verwalten.

Wer diese Rolle hat, bearbeitet jede Mailvorlage: die Standardfassung jeder Mail und die Fassung jedes Mandanten. Welche Rollen das dürfen, stellt die Installation über CIAS_NOTIFICATION_EDITOR_ROLES ein; Standard ist platform-admin und mail-template-admin. Weil die Rolle die Texte aller Mandanten erreicht, ist sie eine Realm-Rolle und wird nie innerhalb eines Mandanten vergeben.

Ergebnis: Siehe Mailvorlagen bearbeiten.

Wann: Der Support soll in einen Mandanten schauen, in dem er nicht Mitglied ist.

Die Filterkette erlaubt den privilegierten Wechsel per Header tenant nur mit dieser Rolle, und nur in Mandanten aus der Liste der erlaubten Mandanten. Sie steht in keinem Katalog und wird nicht über CIAS vergeben.

Ergebnis: Siehe Zwischen Mandanten wechseln.

Wann: Der Support soll sehen, was eine bestimmte Person sieht.

Die Filterkette übernimmt den Header user nur mit dieser Rolle. Ohne sie wird eine Anfrage mit dem Header abgelehnt, 403 cias.authentication.user-switch-denied. Die Rolle allein reicht aber nicht: Die Zielperson muss den Wechsel freigegeben haben, sonst 403 cias.authentication.user-switch-not-consented. Wer die Rolle hat, darf außerdem eine Freigabe beantragen. Die Rolle steht in keinem Katalog und wird nicht über CIAS vergeben.

Ergebnis: Siehe Benutzerwechsel per Header.

Wann: CIAS liest die Deklaration eines Moduls, das als eigener Dienst läuft.

Das Modul beantwortet GET /cias/fetch nur für Tokens mit einer seiner Leserollen. In CDMS steht die Liste in codamai.cdms.cias.reader-roles, im generierten Projekt mit declaration-reader. Eine leere Liste heißt: niemand.

Ergebnis: Siehe Module melden ihre Rollen an.

Warum die Wechselrollen Realm-Rollen sind

Die beiden Wechselrollen müssen der Person überall folgen. Hinge allowed-tenant-context-switch an einem Mandanten, könnte die Person einmal wechseln, stünde dann im Ziel-Mandanten ohne die Rolle und käme nicht mehr zurück. Und eine Organisation, die solche Rollen vergeben könnte, würde ihren Administratoren den Zugang zu fremden Mandanten öffnen.

Woher Realm-Rollen kommen

Beim ersten Start einer Installation
  1. 1
    CIAS→Keycloak
    legt die Realm-Rollen an, die die Installation unter startup.realm-roles nennt, etwa user
  2. 2
    CIAS
    trägt die Plattformrollen aus der Bootstrap-Konfiguration in den Katalog ein, im eigenständigen CIAS platform-admin, user und mail-template-admin, ohne Eigentümer-Modul
  3. 3
    CIAS→Keycloak
    gibt dem Konto mit der konfigurierten Adresse die Plattform-Administrator-Rolle, falls eingestellt
    Ergebnis: Die Installation hat einen ersten Plattform-Administrator

Das Konto für den ersten Plattform-Administrator muss es in Keycloak schon geben. CIAS legt keine Konten mit Passwort an. Nennt die Konfiguration eine Adresse ohne Konto, startet die Anwendung nicht, statt das still zu überspringen.

Weil die Plattformrollen keinem Modul gehören, legt kein Abgleich sie je still.

Nicht verwechseln: die Rollen von CIAS als Modul

tenant-admin, tenant-owner und tenant-user klingen nach Plattform, sind aber Mandantenrollen. CIAS meldet sie an wie jedes andere Modul, sie liegen auf dem Client von CIAS und gelten in einem Mandanten.

RolleBedeutungIm eigenständigen CIAS vergebbar durch
tenant-adminverwaltet einen Mandantentenant-owner, platform-admin
tenant-ownerhat den Mandanten gegründetplatform-admin
tenant-userMitglied eines Mandantentenant-admin, platform-admin

Weitere Administratoren ernennt also die Eigentümerin des Mandanten, nicht jeder Administrator. Eine weitere Eigentümerin kann nur ein Plattform-Administrator ernennen.

Fallen

Weiter

Quellen im Code und in der Wissensdatenbank
  • CIAS/cias-kernel – PlatformAdministrators; CIAS/cias-runtime – CiasPlatformAdministratorConfiguration (platform-admin), application.yml (codamai.cias.bootstrap.roles)
  • CIAS/cias-spring-boot-starter – CiasBootstrap (defineRoles, grantPlatformAdministrator)
  • CIAS/cias-authorization – RoleStartupPass (startup.realm-roles), RoleAssignmentService.authorize (Plattformrollen nie delegiert), CiasIdentityRegistry
  • CIAS/cias-authentication – ContextSwitch (allowed-tenant-context-switch), TokenParser.switchUser (allowed-user-context-switch), EffectiveRoles (Realm-Rollen global)
  • CIAS/cias-notification – MailTemplateEditPolicy (EDITOR_ROLE mail-template-admin, codamai.cias.notification.editor-roles); CIAS/cias-runtime – codamai-realm.json, codamai.cias.bootstrap.roles
  • CIAS/cias-authentication – UserSwitchPolicy; CIAS/cias-user – SwitchConsentService
  • CDMS/cdms-authorization – CiasApi, CiasReaderRoles (codamai.cdms.cias.reader-roles, Standard declaration-reader)
  • CIAS/cias-authorization/docs/adr – ADR-023 (Abschnitt 4), ADR-031
Suchen