Das Rechtekonzept
Beim ersten Starten wird im CMS automatisch eine API cms/users erstellt und darin ein administratives Konto angelegt - der Name des Kontos (i.a. admin) und das Kennwort sind in einer Konfigurationsdatei hinterlegt, die nur der Server kennt. Dieses Konto erhält folgende Zugriffsrechte:
- Vollzugriff auf alle Namensräume, das bedeutet vor allem die unbeschränkte (CRUD) Manipulation von sämtlichen APIs
- Alle Datensätze in allen APIs aller Datensätze sind sichtbar, können aber nicht verändert oder gelöscht werden
- Vollzugriff auf die API cms/users, i.e. Benutzerkonten und deren Rechte können uneingeschränkt gepflegt werden - lediglich der Zugriff auf die Kennwörter ist vollständig unterbunden
Grundsätzlich können folgende Rechte vergeben werden:
- namespaceAdmin ist eine Liste von Namensräumen, auf die das Konto Vollzugriff erhält -
*
ist der Platzhalter für alle Namensräume. Mit diesem Recht können APIs in dem Namensraum angezeigt, angelegt, verändert und entfernt werden. Ein Zugriff auf Datensätze ist damit allerdings nicht verbunden. - namespaceUser beschreibt analog die Namensräume, deren APIs zumindest angezeigt werden können, wieder ohne irgendwelche Rechte auf Datensätze.
- apiWrite erlaubt den Vollzugriff auf Datensätze in der bezeichneten API -
*
steht dabei für alle APIs in allen Namensräumen,tutorial/*
für alle APIs im Namensraum tutorial. Datensätze können angezeigt, angelegt, verändert und entfernt werden. - apiRead wiederum analog, allerdings ausschließlich für die Anzeige von Datensätzen.
Für jeden Datensatz gibt es eine zusätzliche Regel: Das Konto, das den Datensatz angelegt oder verändert hat, darf diesen immer auch verändern oder löschen. Ein Leserecht ist damit allerdings nicht verbunden. Ähnlich ist es für eine API, wobei hier allerdings dieses Sonderrecht nur dem Konto zugestanden wird, mit dem die API erstellt wurde.
Folgender Screenshot zeigt die Standardkonfiguration für einen Mandanten CMS_User_01: Dieser erhält Vollzugriff auf mindestens einen Namensraum (hier: tutorial), Vollzugriff auf alle APIs und alle Datensätze in diesen APIs:
In diesem Fall
- hat der Mandant CMS_User_01 Vollzugriff auf API- / Collection-Konfiguration in Namespace tutorial und
- Vollzugriff auf alle Datensätzen in allen APIs / Collections des Namespaces tutorial
- (eine hier nicht gesetzte und derzeit auch nirgendwo im CMS genutzte Email-Adresse)
Rechte können exakt auf Namespaces (tutorial-1)
und APIs (tutorial-1/html)
vergeben werden, auch ein übergreifender Wildcard *
(alle Namespaces (*
), alle APIs (*
) oder alle APIs in einem Namespace (tutorial-1/*
)) ist erlaubt.
Weiterhin ist es auch möglich, ein Recht mit ^
beginnen zu lassen, dieses wird dann intern als regulärer Ausdruck verwendet:
^kunde-
für alle Namespaces, die mitkunde-
beginnen^kunde-[^/]*/[^/]+$
für alle APIs in allen Namespaces, die mitkunde-
beginnen^kunde-[^/]*/config$
für APIs mit dem Namen config in allen Namespaces, die mitkunde-
beginnen^[^/]+/config$
für APIs mit dem Namenconfig
in allen Namespaces$in
,$nin
,$eq
,$ne
,$exists
auch für_id
,_cms.createdBy
und_cms.modifiedBy
Vergabe von Kennwörtern
Bei der ersten Anmeldung eines jeden Users kann der User sein oder ihr Kennwort selbst frei wählen. Ein Administrator kann Kennwörter nur zurücksetzen (löschen), so dass das jeweilige Kennwort bei der nächsten Anmeldung wieder gewählt werden kann.