31 Berechtigungsmodell: Datenbankstruktur und Beziehungen

31.1 Einleitung

Jira, Atlassians führendes Projektmanagement-Tool, basiert auf einem komplexen, aber elegant strukturierten Berechtigungsmodell. Diese Architektur ermöglicht eine granulare Zugriffskontrolle und unterstützt die Anforderungen großer Unternehmen mit komplexen Organisationsstrukturen. In diesem Artikel werden wir die Datenbankstruktur und Beziehungen des Jira-Berechtigungsmodells im Detail analysieren.

31.2 Die Kernelemente des Berechtigungsmodells

Die oben dargestellte Entity-Relationship-Diagramm (ER-Diagramm) zeigt die wesentlichen Entitäten und deren Beziehungen im Jira-Berechtigungsmodell. Lassen Sie uns jeden Bestandteil und seine Rolle genauer betrachten.

31.2.1 PROJECT

Die PROJECT-Entität steht im Zentrum der Jira-Instanz. Jedes Projekt in Jira ist eine eigenständige Arbeitsumgebung mit folgenden Hauptattributen:

Jedes Projekt ist mit genau einem Berechtigungsschema (PERMISSION_SCHEME) verknüpft, das die Zugriffsrechte für das Projekt definiert.

31.2.2 PERMISSION_SCHEME

Ein PERMISSION_SCHEME ist eine Sammlung von Berechtigungszuweisungen, die als Ganzes auf ein oder mehrere Projekte angewendet werden kann. Es hat folgende Attribute:

Ein Berechtigungsschema kann theoretisch auf mehrere Projekte angewendet werden, wodurch die Verwaltung von Berechtigungen über mehrere Projekte hinweg vereinfacht wird. In der Praxis ist die Beziehung jedoch oft 1:1, da viele Organisationen projektspezifische Anpassungen benötigen.

31.2.3 PERMISSION_MAPPING

Die PERMISSION_MAPPING-Entität ist das Bindeglied zwischen Berechtigungen und deren Empfängern. Sie definiert, wer welche Berechtigung erhält. Jedes Mapping hat ein:

Diese Entität verbindet drei zentrale Konzepte:

  1. Das Berechtigungsschema, zu dem die Zuordnung gehört
  2. Die spezifische Berechtigung, die gewährt wird
  3. Den Empfänger (Grantee), dem die Berechtigung erteilt wird

31.2.4 PERMISSION

Die PERMISSION-Entität repräsentiert eine konkrete Berechtigung in Jira, wie “Issues erstellen” oder “Projekt verwalten”. Sie enthält:

Jira enthält eine vordefinierte Menge an Berechtigungen, die nicht erweiterbar ist. Diese Berechtigungen decken alle Aspekte der Arbeit mit Jira ab, von grundlegenden Aktionen wie dem Anzeigen von Issues bis hin zu administrativen Funktionen wie der Projektkonfiguration.

31.2.5 GRANTEE

GRANTEE ist eine abstrakte Entität, die als Interface für verschiedene Empfängertypen von Berechtigungen dient. Ein Grantee kann sein:

Diese flexible Struktur ermöglicht eine präzise Zugriffskontrolle, die sich an die Organisationsstruktur und Arbeitsabläufe anpassen lässt.

31.2.6 USER

Die USER-Entität repräsentiert einen individuellen Jira-Benutzer mit dem Attribut:

Die Zuweisung von Berechtigungen direkt an einzelne Benutzer wird in der Regel vermieden, da dies die Verwaltung erschwert. Dennoch ist diese Möglichkeit vorhanden für Spezialfälle oder temporäre Zuweisungen.

31.2.7 GROUP

Die GROUP-Entität steht für eine Benutzergruppe in Jira mit dem Attribut:

Gruppen sind ein zentrales Konzept in Jira und werden häufig verwendet, um Berechtigungen für Teams, Abteilungen oder andere organisatorische Einheiten zu verwalten. Jira bietet einige Standardgruppen wie “jira-administrators” und “jira-software-users”, ermöglicht aber auch die Erstellung benutzerdefinierter Gruppen.

31.2.8 PROJECT_ROLE

Die PROJECT_ROLE-Entität repräsentiert eine Rolle innerhalb eines Projekts:

Projektrollen sind besonders wertvoll, da sie projektspezifisch besetzt werden können. Die gleiche Rolle kann in verschiedenen Projekten mit unterschiedlichen Benutzern oder Gruppen besetzt sein, was eine flexible und skalierbare Berechtigungsverwaltung ermöglicht.

31.2.9 APPLICATION_ROLE

Die APPLICATION_ROLE-Entität bezieht sich auf Rollen auf Anwendungsebene:

Anwendungsrollen sind spezifisch für bestimmte Jira-Anwendungen wie Jira Software, Jira Service Management oder Jira Core. Sie steuern den Zugriff auf anwendungsspezifische Funktionen und werden in der Regel automatisch verwaltet.

31.2.10 CUSTOM_FIELD_VALUE

Die CUSTOM_FIELD_VALUE-Entität ermöglicht eine bedingte Berechtigungsvergabe basierend auf benutzerdefinierten Feldwerten:

Diese fortgeschrittene Funktion erlaubt es, Berechtigungen basierend auf Metadaten zu vergeben. Beispielsweise könnten Berechtigungen basierend auf der Projektklassifizierung (“intern”, “extern”) oder dem Projekttyp (“Entwicklung”, “Marketing”) vergeben werden.

31.3 Beziehungen im Berechtigungsmodell

Die Beziehungen zwischen den Entitäten definieren die Struktur und Funktionsweise des Jira-Berechtigungsmodells:

31.3.1 PROJECT zu PERMISSION_SCHEME (1:1)

Jedes Projekt verwendet genau ein Berechtigungsschema. Änderungen am Schema wirken sich sofort auf alle verknüpften Projekte aus.

31.3.2 PERMISSION_SCHEME zu PERMISSION_MAPPING (1:n)

Ein Berechtigungsschema definiert mehrere Berechtigungszuordnungen. Diese 1:n-Beziehung ermöglicht es, in einem Schema mehrere Berechtigungen an verschiedene Empfänger zu vergeben.

31.3.3 PERMISSION_MAPPING zu PERMISSION (n:1)

Mehrere Berechtigungszuordnungen können auf die gleiche Berechtigung verweisen. Dies ist notwendig, um die gleiche Berechtigung verschiedenen Empfängern zu gewähren.

31.3.4 PERMISSION_MAPPING zu GRANTEE (n:1)

Mehrere Berechtigungszuordnungen können auf den gleichen Empfänger verweisen. Dies ermöglicht es, einem Empfänger mehrere verschiedene Berechtigungen zu gewähren.

31.3.5 GRANTEE zu seinen Implementierungen (1:1)

Ein GRANTEE kann jeweils genau einer der implementierenden Entitäten entsprechen: USER, GROUP, PROJECT_ROLE, APPLICATION_ROLE oder CUSTOM_FIELD_VALUE. Diese 1:1-Beziehungen definieren, welche Art von Empfänger die Berechtigung erhält.

31.4 Implementierungsaspekte

31.4.1 Zugriffsberechnung zur Laufzeit

Wenn ein Benutzer in Jira eine Aktion ausführen möchte, berechnet das System in Echtzeit, ob die erforderliche Berechtigung vorliegt. Dabei werden mehrere Faktoren berücksichtigt:

  1. Das Berechtigungsschema des aktuellen Projekts
  2. Die benötigte Berechtigung für die Aktion
  3. Die direkten und indirekten Berechtigungen des Benutzers:

Diese mehrschichtige Prüfung erfolgt für jede Aktion und macht das Jira-Berechtigungssystem sowohl flexibel als auch leistungsfähig.

31.4.2 Hierarchie der Berechtigungen

Bei der Auswertung von Berechtigungen gilt das Prinzip “erlauben über verbieten”. Das bedeutet:

Diese Hierarchie vereinfacht die Verwaltung und verhindert versehentliche Ausschlüsse.

31.5 Best Practices für die Verwaltung des Berechtigungsmodells

31.5.1 Berechtigungsschemas strukturieren

  1. Vorlagenschemas erstellen: Entwickeln Sie Standardschemas für verschiedene Projekttypen (z.B. Entwicklungsprojekte, Marketing-Projekte).
  2. Schemavererbung nutzen: Erstellen Sie ein Basisschema und kopieren Sie es für spezifische Anpassungen.
  3. Schemas dokumentieren: Dokumentieren Sie Zweck und Anwendungsbereich jedes Schemas.

31.5.2 Empfängerauswahl optimieren

  1. Gruppen bevorzugen: Verwenden Sie Gruppen statt einzelner Benutzer für eine einfachere Verwaltung.
  2. Projektrollen für projektspezifische Zuweisungen: Nutzen Sie Projektrollen für Berechtigungen, die in verschiedenen Projekten unterschiedlich besetzt sein sollen.
  3. Minimalprinzip anwenden: Gewähren Sie nur die Berechtigungen, die tatsächlich benötigt werden.

31.5.3 Skalierbarkeit gewährleisten

  1. Standardisierte Benennungskonventionen: Verwenden Sie konsistente Namen für Schemas, Gruppen und Rollen.
  2. Regelmäßige Überprüfungen: Führen Sie Audits durch, um unnötige oder veraltete Berechtigungen zu identifizieren.
  3. Automatisierung nutzen: Implementieren Sie Automatisierungen für wiederkehrende Verwaltungsaufgaben.