Das Wichtigste
- Rollen (wer jemand ist) von Berechtigungen (was eine Aktion erfordert) trennen.
- Geltungsbereiche – Standort, Abteilung, Zuständigkeit – als zweite Dimension hinzufügen.
- Zugriff bei jeder Anfrage auf dem Server prüfen; die Oberfläche blendet nur aus, was nicht erlaubt ist.
- Jede Rollenänderung und jeden sensiblen Zugriff protokollieren.
Zugriffskontrolle beginnt oft als „Admin“-Flag und wird zu einem Geflecht aus Sonderfällen. Eine Struktur aus Rollen, Berechtigungen und Geltungsbereichen, die auch bei Wachstum verständlich bleibt.
Wie Zugriffskontrolle meist zerfällt
Die meisten Systeme beginnen mit zwei Nutzerarten: Administratoren und alle anderen. Mit dem Wachstum entstehen Ausnahmen – eine Führungskraft, die freigeben, aber nicht löschen darf, eine Filiale, die nur ihre eigenen Datensätze sehen soll, ein Prüfer, der alles lesen und nichts ändern darf. Jede Ausnahme wird zu einer if-Abfrage, und bald kann niemand mehr sicher sagen, wer was darf.
Rollen und Berechtigungen sind verschiedene Dinge
Definieren Sie Berechtigungen als die Aktionen, die Ihr System unterstützt – Rechnung anlegen, Urlaub genehmigen, Bericht exportieren. Definieren Sie Rollen als benannte Bündel von Berechtigungen, die echten Funktionen entsprechen. Der Code prüft Berechtigungen, niemals Rollennamen.
Diese eine Regel macht Änderungen günstig. Entsteht eine neue Funktion, legen Sie eine Rolle aus vorhandenen Berechtigungen an, statt an Dutzenden Stellen Code zu ändern.
Geltungsbereich als zweite Dimension
Berechtigungen beantworten „Darf diese Person Urlaub genehmigen?“. Geltungsbereiche beantworten „Für wen?“. In einem Krankenhaussystem darf eine Abteilungsleitung nur für ihre Abteilung genehmigen; in einer Schule mit mehreren Standorten sieht die Schulleitung nur ihren Standort.
- Organisatorischer Bereich: Unternehmen, Region, Filiale, Abteilung.
- Zuständigkeitsbereich: Datensätze, die der Nutzer angelegt hat oder betreut.
- Beziehungsbereich: Eltern sehen nur die Daten ihrer eigenen Kinder.
Auf dem Server durchsetzen – jedes Mal
Einen Button auszublenden ist eine Usability-Maßnahme, keine Sicherheitskontrolle. Jede API-Anfrage muss Berechtigung und Geltungsbereich auf dem Server prüfen, idealerweise in einer gemeinsamen Schicht, damit einzelne Endpunkte es nicht vergessen können. Wo die Datenbank es unterstützt, bieten Policies auf Zeilenebene ein zusätzliches Sicherheitsnetz.
Zugriff nachvollziehbar machen
Protokollieren Sie jede Änderung an Rollen und Zuweisungen und jeden Zugriff auf sensible Datensätze. Wenn ein Kunde, Prüfer oder eine Aufsichtsbehörde fragt, wer wann was sehen konnte, sollte die Antwort aus einer Abfrage kommen, nicht aus dem Gedächtnis.
Hat es Ihnen gefallen? Den nächsten Beitrag per E-Mail erhalten.

