Filter anzeigen

All

News

Referenzen

  • #Software
  • #Development
  • #Testing
  • #JavaScript
  • #TDD
  • #Meetup
  • #Netzwerk
  • #JS Meetup
  • #Technologie
  • #ePrivacy
  • #DSVGO
  • #Datenschutz
  • #Digitalisierung
  • #Agil
  • #Apps
  • #Frontend
  • #Web
  • #Backend
  • #Informationsmanagement
  • #Referenzen
  • #Controlling
  • #Excel
  • #Microsoft
  • #Planning
  • #Projektmanagement
  • #Reporting
  • #SharePoint
  • #Prozesse
  • #Individualsoftware
  • #Förderung
  • #SAB
  • #UseCase
  • #Quality
  • #Electron
  • #React
  • #Tiefbau

Berechtigungssystem auf dem nächsten Level

July 2019

von Johann Roth

#Agil #Apps #Frontend #Web #Backend #Informationsmanagement #Referenzen
Je umfangreicher ein BI-System (Business Intelligence) ist, desto kritischer ist ein robustes Berechtigungssystem, das unerlaubte bzw. unerwünschte Zugriffe verhindert und dennoch für den Nutzer transparent und verständlich ist. In diesem Blog-Artikel zeigen wir, wie wir zur Erfüllungen der individuellen Wünsche und den mit der Zeit gewachsenen Anforderungen eines Kunden an ein von uns entwickeltes System diesen Einschränkungen begegnet sind und sie erfolgreich durch ein Berechtigungssystem auf dem nächsten Level überwinden konnten.

BI-Systeme(Business Intelligence) sind Systeme, die einem Unternehmen vorhandene Daten aufnehmen und verarbeiten können. Der Erkenntnisgewinn durch Analyse, Strukturierung und Aufbereitung der Daten soll Entscheidungen des Managements stützen.

Wozu braucht man ein Berechtigungssystem?

Je umfangreicher das BI-System, desto kritischer ist ein robustes Berechtigungssystem. Nutzer sollen in unterschiedlichen Rollen jeweils nur die für sie relevanten Daten einsehen bzw. einpflegen können. Bestimmte Auswertungen wie beispielsweise globale Marktübersichten sollen dem Management vorbehalten bleiben.

Die Grundbestandteile von Berechtigungssystemen

  • Rechte erlauben das Durchführen bestimmter Aktionen (z.B. Lesen, Ändern, Anlegen, Löschen) auf Datensatzätze des BI-Systems (z.B. ein Fertigungsauftrag, eine produzierte Komponente, ein Kundenprojekt)
  • Rollen erlauben die Sammlung und Zusammenfassung von Rechten (z.B. Controlling, Vertrieb, Management)
  • Nutzern des Systems können Rollen zugewiesen werden

Sobald mindestens eine Rolle einem Nutzer ein bestimmtes Recht gibt, darf der Nutzer die entsprechende Aktion ausführen.

Dieser Aufbau erlaubt es neue Rollen zu schaffen, die bestehende Rechte kombinieren. Dabei bleibt die Implementierung der eigentlichen Aktionen unangetastet, da weiterhin nur die Rechte geprüft werden, die ein Nutzer von seinen Rollen erhält.

Das Problem: Granulare Rechte auf einzelnen Feldern

Sollte der Fall auftreten, dass ein Nutzer nur bestimmte Teile eines Datensatzes einsehen darf, stößt ein simples Berechtigungssystem technisch an seine Grenzen.

Erste Lösungsansätze

Ein möglicher Ausweg bzw. Umweg ist das Aufteilen der einzelnen Felder eines Datensatzes in Teildatensätze (z.B. Preis als Teil der Finanzdaten und Stückzahl und technische Ausprägung als Teil der Produktionsdaten eines Fertigungsauftrags).

Technisch bringt dieses Aufsplitten einige Nachteile mit sich:

  • eigentlich zusammengehörende Daten werden auf Teildatensätze verteilt: das technische Datenmodell wird damit komplexer
  • zur Übermittlung an Nutzeroberflächen müssen Teildatensätze wieder zusammengeführt werden
  • die Zuordnung von Teildaten in die jeweiligen Teildatensätze ist nicht immer eindeutig möglich
  • ein Verändern von Rechten eines einzelnen Feldes ist nicht möglich, ohne das Feld in einen neuen Teildatensatz zu verschieben, der die entsprechend gewünschten neuen Rechte umsetzt
  • das Verschieben eines Feldes von einem in einen anderen Teildatensatz ist technisch aufwändig, und damit das Berechtigungssystem wenig flexibel.
  • das Aufteilen eines Datensatzes in Teildatensätze ist eine direkte Veränderung des Datenmodells, lediglich um neuen Anforderungen an das Rechtesystem gerecht zu werden.

Unsere Anforderungen an das Berechtigungssystem: Use Case

In einem von uns entwickelten System ergab sich genau diese Anforderung, Rechte granular auf einzelnen Feldern definieren zu können. Aus den zuvor genannten Nachteilen einer Standardlösung haben wir folgende Ansprüche an unsere Lösung gestellt:

  • Das Berechtigungssystem soll es erlauben, auf Feld-Ebene Rechte für unterschiedliche Nutzerrollen zu definieren.
  • Es soll nicht nötig sein, Datensätze aufzuteilen. Das bestehende Datenmodell soll unangetastet bleiben.
  • Eine Pflege der Rechte für jedes einzelne Feld in Datensätzen soll ohne großen technischen Aufwand möglich sein.
  • Ein Nutzer soll jederzeit Feedback darüber bekommen, warum eine gewisse Aktion für ihn nicht möglich ist und welche Rollen benötigt werden, um die Aktion ausführen zu können.

Unser technischer Ansatz: Berechtigungen auf eigener Ebene

In üblichen Umsetzungen von Berechtigungssystemen werden alle Rechte für alle Datensätze zentral an der Rolle definiert (Rolle 🠦 Datensatz 🠦 Rechte).

In unserer Lösung sind dagegen ausgehend vom Feld die Rechte sämtliche Rollen definiert (Datensatz 🠦 Feld 🠦 Rolle 🠦 Rechte).

In einer technisch separaten Ebene kann jedem Feld ein Regelsatz zugewiesen werden, der genau definiert, welche Rollen welche Rechte auf diesem Feld erteilen. Um den Pflegeaufwand zu begrenzen kann für einen Datensatz ein Standard-Regelsatz definiert werden.

Sämtliche Rechte sind damit direkt am Feld gesammelt. Das erlaubt dem System sehr leicht zu ermitteln, welche Rollen benötigt werden, um ein bestimmtes Recht auf einem Feld zu erhalten.

Eine flexible und transparente Lösung für ein komplexes Problem

Mit unserer Lösung haben wir es geschafft, ein Berechtigungssystem umzusetzen, das flexibel den fachlichen Anforderungen des Kunden gerecht wird. Komplexe Regeln für Berechtigungen bis auf Feld-Ebene können durch das System ohne großen Aufwand abgebildet werden. Aufgrund des detaillierten Feedbacks, das der Nutzer bei fehlenden Rechten , bleibt dem Nutzer das System auch bei umfassenden und komplexen Regelsätzen transparent.

Wenn Sie weitere Fragen oder Ideen zu diesem Thema haben, kommen Sie gerne auf uns zu. Gemeinsam finden wir eine Lösung, das garantieren wir!

Berechtigungssystem auf dem nächsten Level

July 2019

von Johann Roth

#Agil #Apps #Frontend #Web #Backend #Informationsmanagement #Referenzen

Je umfangreicher ein BI-System (Business Intelligence) ist, desto kritischer ist ein robustes Berechtigungssystem, das unerlaubte bzw. unerwünschte Zugriffe verhindert und dennoch für den Nutzer transparent und verständlich ist. In diesem Blog-Artikel zeigen wir, wie wir zur Erfüllungen der individuellen Wünsche und den mit der Zeit gewachsenen Anforderungen eines Kunden an ein von uns entwickeltes System diesen Einschränkungen begegnet sind und sie erfolgreich durch ein Berechtigungssystem auf dem nächsten Level überwinden konnten.

BI-Systeme(Business Intelligence) sind Systeme, die einem Unternehmen vorhandene Daten aufnehmen und verarbeiten können. Der Erkenntnisgewinn durch Analyse, Strukturierung und Aufbereitung der Daten soll Entscheidungen des Managements stützen.

Wozu braucht man ein Berechtigungssystem?

Je umfangreicher das BI-System, desto kritischer ist ein robustes Berechtigungssystem. Nutzer sollen in unterschiedlichen Rollen jeweils nur die für sie relevanten Daten einsehen bzw. einpflegen können. Bestimmte Auswertungen wie beispielsweise globale Marktübersichten sollen dem Management vorbehalten bleiben.

Die Grundbestandteile von Berechtigungssystemen

  • Rechte erlauben das Durchführen bestimmter Aktionen (z.B. Lesen, Ändern, Anlegen, Löschen) auf Datensatzätze des BI-Systems (z.B. ein Fertigungsauftrag, eine produzierte Komponente, ein Kundenprojekt)
  • Rollen erlauben die Sammlung und Zusammenfassung von Rechten (z.B. Controlling, Vertrieb, Management)
  • Nutzern des Systems können Rollen zugewiesen werden

Sobald mindestens eine Rolle einem Nutzer ein bestimmtes Recht gibt, darf der Nutzer die entsprechende Aktion ausführen.

Dieser Aufbau erlaubt es neue Rollen zu schaffen, die bestehende Rechte kombinieren. Dabei bleibt die Implementierung der eigentlichen Aktionen unangetastet, da weiterhin nur die Rechte geprüft werden, die ein Nutzer von seinen Rollen erhält.

Das Problem: Granulare Rechte auf einzelnen Feldern

Sollte der Fall auftreten, dass ein Nutzer nur bestimmte Teile eines Datensatzes einsehen darf, stößt ein simples Berechtigungssystem technisch an seine Grenzen.

Erste Lösungsansätze

Ein möglicher Ausweg bzw. Umweg ist das Aufteilen der einzelnen Felder eines Datensatzes in Teildatensätze (z.B. Preis als Teil der Finanzdaten und Stückzahl und technische Ausprägung als Teil der Produktionsdaten eines Fertigungsauftrags).

Technisch bringt dieses Aufsplitten einige Nachteile mit sich:

  • eigentlich zusammengehörende Daten werden auf Teildatensätze verteilt: das technische Datenmodell wird damit komplexer
  • zur Übermittlung an Nutzeroberflächen müssen Teildatensätze wieder zusammengeführt werden
  • die Zuordnung von Teildaten in die jeweiligen Teildatensätze ist nicht immer eindeutig möglich
  • ein Verändern von Rechten eines einzelnen Feldes ist nicht möglich, ohne das Feld in einen neuen Teildatensatz zu verschieben, der die entsprechend gewünschten neuen Rechte umsetzt
  • das Verschieben eines Feldes von einem in einen anderen Teildatensatz ist technisch aufwändig, und damit das Berechtigungssystem wenig flexibel.
  • das Aufteilen eines Datensatzes in Teildatensätze ist eine direkte Veränderung des Datenmodells, lediglich um neuen Anforderungen an das Rechtesystem gerecht zu werden.

Unsere Anforderungen an das Berechtigungssystem: Use Case

In einem von uns entwickelten System ergab sich genau diese Anforderung, Rechte granular auf einzelnen Feldern definieren zu können. Aus den zuvor genannten Nachteilen einer Standardlösung haben wir folgende Ansprüche an unsere Lösung gestellt:

  • Das Berechtigungssystem soll es erlauben, auf Feld-Ebene Rechte für unterschiedliche Nutzerrollen zu definieren.
  • Es soll nicht nötig sein, Datensätze aufzuteilen. Das bestehende Datenmodell soll unangetastet bleiben.
  • Eine Pflege der Rechte für jedes einzelne Feld in Datensätzen soll ohne großen technischen Aufwand möglich sein.
  • Ein Nutzer soll jederzeit Feedback darüber bekommen, warum eine gewisse Aktion für ihn nicht möglich ist und welche Rollen benötigt werden, um die Aktion ausführen zu können.

Unser technischer Ansatz: Berechtigungen auf eigener Ebene

In üblichen Umsetzungen von Berechtigungssystemen werden alle Rechte für alle Datensätze zentral an der Rolle definiert (Rolle 🠦 Datensatz 🠦 Rechte).

In unserer Lösung sind dagegen ausgehend vom Feld die Rechte sämtliche Rollen definiert (Datensatz 🠦 Feld 🠦 Rolle 🠦 Rechte).

In einer technisch separaten Ebene kann jedem Feld ein Regelsatz zugewiesen werden, der genau definiert, welche Rollen welche Rechte auf diesem Feld erteilen. Um den Pflegeaufwand zu begrenzen kann für einen Datensatz ein Standard-Regelsatz definiert werden.

Sämtliche Rechte sind damit direkt am Feld gesammelt. Das erlaubt dem System sehr leicht zu ermitteln, welche Rollen benötigt werden, um ein bestimmtes Recht auf einem Feld zu erhalten.

Eine flexible und transparente Lösung für ein komplexes Problem

Mit unserer Lösung haben wir es geschafft, ein Berechtigungssystem umzusetzen, das flexibel den fachlichen Anforderungen des Kunden gerecht wird. Komplexe Regeln für Berechtigungen bis auf Feld-Ebene können durch das System ohne großen Aufwand abgebildet werden. Aufgrund des detaillierten Feedbacks, das der Nutzer bei fehlenden Rechten , bleibt dem Nutzer das System auch bei umfassenden und komplexen Regelsätzen transparent.

Wenn Sie weitere Fragen oder Ideen zu diesem Thema haben, kommen Sie gerne auf uns zu. Gemeinsam finden wir eine Lösung, das garantieren wir!

Bevorzugte Kontaktaufnahme

esveo wird alle hier bereitgestellten Informationen ausschließlich in Übereinstimmung mit der Datenschutzerklärung verwenden