Rechte und Rollen
Worum geht es?
Kurz gesagt: Wer in einem Projekt etwas sehen oder ändern darf, hängt von seiner Beziehung zum Projekt ab, und jede Anfrage wird zentral geprüft. Projekte sind voneinander getrennt, und Admins der Nutzerverwaltung sehen keine Buchinhalte. Berechtigte Personen können Inhalte aber trotzdem kopieren.
Schutzziel
Jede Person soll nur das sehen und tun können, wofür sie im jeweiligen Projekt berechtigt ist, und nichts in Projekten, in denen sie nicht vorkommt.
Funktionsprinzip
Drei Dinge sind voneinander getrennt und werden nicht vermischt:
- Die Rolle im Projekt: Owner, Co-Autor oder Gast. Es gibt keine globale Autoren- oder Gast-Rolle, sie ergibt sich aus der Beziehung zwischen Konto und Projekt. Ein Konto kann Owner eigener Projekte und Gast in fremden sein.
- Die Nutzerverwaltung: Admins der Nutzerverwaltung verwalten Konten, bekommen dadurch aber keinen Zugriff auf Buchinhalte.
- Das Recht, Projekte anzulegen: Gast-Konten können keine eigenen Projekte anlegen.
Gäste gibt es in drei Stufen: Nur lesen, Lesen und kommentieren (Beta-Leser) und Lektorat für Verlage und Lektoren. Das Lektorat ist keine Erweiterung der Kommentarstufe, sondern eine eigene Stufe: Sie gilt nur für ein Buch, nur die Eigentümerin oder der Eigentümer kann sie vergeben, und sie erlaubt Änderungsvorschläge im Text und den Export des freigegebenen Buchs.
Maßnahmen
- Wir prüfen jede Anfrage zentral mit festen Regeln und nicht mit einzelnen Ad-hoc-Abfragen im Code. Ein Test stellt sicher, dass keine Route ohne Prüfung bleibt.
- Zusätzlich begrenzt ein Filter in der Datenbankabfrage jede Abfrage auf die Projekte, auf die ein Konto Zugriff hat. Eine neue Tabelle mit Projektbezug kann diesen Filter nicht vergessen.
- Antworten enthalten nur Felder, die ausdrücklich freigegeben sind. Eingebettete Personenangaben enthalten nur Kennung und Anzeigename.
- Eine Freigabe wird bei jeder Anfrage live geprüft. Läuft sie ab oder entziehst du sie, wirkt das beim nächsten Aufruf.
- Schaltest du ein Modul ab, werden Freigaben auf Inhalte dieses Moduls mit abgeschaltet und beim Wiedereinschalten wieder wirksam.
- Gesperrte Konten verlieren ihren Zugriff bei der nächsten Anfrage, nicht erst bei der nächsten Anmeldung.
- Du siehst, wer wann auf deine freigegebenen Inhalte zugegriffen hat. Das Protokoll sehen nur Owner und Co-Autoren, nicht die beobachteten Gäste.
Was wir nicht versprechen
- Wer Inhalte sehen darf, kann sie kopieren oder fotografieren. Rechte schützen nicht vor Weitergabe durch berechtigte Personen.
- Admins der Nutzerverwaltung sehen keine Buchinhalte. Das gilt für die Anwendung selbst, nicht gegenüber Personen mit Root-Zugriff auf den Server.
- Backstage-Werkzeuge wie To-do-Liste, Recherche-Ablage oder Schreibstatistik sind nicht Teil einer Freigabe.
Wie wir das prüfen
Zu den Regeln gibt es automatisierte Tests, die die Tabelle unten nennt. Viele davon sind Muster-Tests, die den ganzen Code durchsuchen statt einzelne Fälle zu prüfen. Die zugehörigen Szenarien („Compromised User“, „Cross-Tenant IDOR“, „Compromised Co-Author“, „Compromised Editor“, „Permission Escalation“) stehen im Monatsbericht.
Nachweis-Tests
| Test | Das belegt der Test |
|---|---|
AuthorizationCoverageTest |
Jede Route der Anwendung hat eine ausdrückliche Entscheidung zur Zugriffsprüfung. |
TenantFilterCoverageTest |
Jede Tabelle mit Projektbezug wird automatisch auf die erlaubten Projekte eingegrenzt. |
SerializerGroupLeakageTest |
Felder ohne ausdrückliche Freigabe landen in keiner Antwort. |
IdSubstitutionCrossTenantTest |
Anfragen mit ausgetauschten Kennungen erreichen keine Daten fremder Projekte. |
VoterUserStatusGateCoverageTest |
Jede Rechteprüfung berücksichtigt den aktuellen Kontostatus. |
BookScopeLeakageTest |
Ein Zugriff auf ein Buch reicht nicht in andere Bücher. |
AccessGrantRevocationTest |
Ein widerrufener Zugriff wirkt sofort. |
AccessGrantEditorialPermissionEscalationTest |
Eine Freigabe lässt sich nicht auf Lektorats-Rechte anheben. |
AccessLogVisibilityTest |
Das Zugriffsprotokoll sehen nur Owner und Co-Autoren. |
UserLegalDataVisibilityVoterTest |
Auch ein Admin der Nutzerverwaltung sieht die Rechtsdaten eines anderen Kontos nicht. |
Änderungsverlauf
- : Erste Fassung.