CRUD-Berechtigungen externer Systeme im GLPI mit Access Matrix steuern

CRUD-Berechtigungsmatrix für externe Systeme im GLPI mit Access Matrix: Auflösungsmodell in 4 Schichten (ODER), SQL-Diagnose für Audits, Migration per CSV und die Stolperfallen aus der Praxis (ODER entzieht nie) – direkt aus dem Betriebssupport von NexTool-Umgebungen.

In diesem Artikel7 Abschnitte

Bei einem Audit fragt niemand „Wer hat Zugriff auf das ERP?“. Gefragt wird „Wer darf im ERP eine Buchung LÖSCHEN?“ – und die Zugriffstabelle kann das selten beantworten. Access Matrix holt diese Entscheidungsmatrix ins GLPI: externe Systeme, ihre Module und vier CRUD-Flags (Erstellen, Lesen, Aktualisieren, Löschen), aufgelöst nach Funktion, Gruppe und Benutzer. Dieser Leitfaden zeigt das Auflösungsmodell, eine SQL-Diagnose direkt in der Datenbank, das Migrationsformat zwischen Umgebungen und die Stolperfallen, die erst in der Produktion auftauchen.

Das eigentliche Problem: die Tabelle, der niemand vertraut

Im Betriebssupport von Kundenumgebungen ist es immer dieselbe Anforderung, die die Schwäche der Steuerung per Tabelle offenlegt. Ein Audit steht an (ISO 27001, SOX oder ein Zugriffsbericht für die LGPD), und die Anforderung ist granular: „Listen Sie alle Funktionen auf, die im Finanzsystem Datensätze erstellen und löschen dürfen.“ Eine Tabelle mit „hat Zugriff / hat keinen Zugriff“ beantwortet das nicht: Sie trennt Lesen nicht von Schreiben, hat keinen Verlauf, wer was geändert hat, und ist bereits veraltet, weil das letzte Ausscheiden eines Mitarbeiters nicht nachgetragen wurde. Access Matrix schließt diese Lücke: Es modelliert den Zugriff in CRUD-Granularität und hält alles im GLPI, zusammen mit dem übrigen Service-Desk-Betrieb.

Was das Modul modelliert: Systeme, Module und vier Flags

Die Struktur ist bewusst einfach. Sie erfassen die externen Systeme (ERP, CRM, BI, Portale von Drittanbietern) und darin die relevanten Module (zum Beispiel „Kreditorenbuchhaltung“, „Fakturierung“, „Berichte“). Für jede Kombination aus Funktion und Modul setzen Sie vier Checkboxen: Erstellen, Lesen, Aktualisieren, Löschen. Eine Berechtigung kann auf Ebene des gesamten Systems oder pro Modul definiert werden. In der Datenbank werden daraus die Spalten can_create, can_read, can_update, can_delete (tinyint 0/1), mit dem Modul auf NULL, wenn die Regel für das ganze System gilt.

Eine ehrliche und wichtige Klarstellung: Access Matrix ist kein Proxy, der die Anmeldung im ERP blockiert, und greift nicht in das externe System ein. Es ist die maßgebliche Entscheidungsmatrix – die verlässliche Quelle, die dokumentiert, auflöst und anzeigt, wer welche Berechtigung haben soll, damit das Team, das den Zugriff einrichtet (oder der Auditor, der ihn prüft), mit verlässlichen Daten im GLPI arbeitet und nicht mit einer losen Tabelle.

Auflösung in 4 Schichten (ODER: die großzügigste gewinnt)

Die effektive Berechtigung eines Benutzers stammt nicht aus einer einzigen Quelle. Das Modul kombiniert vier Quellen mit ODER-Logik – für jedes CRUD-Flag gilt: Gewährt irgendeine Schicht es, hat der Benutzer es. In der Praxis ist das Ergebnis jedes Flags ein max() über die Schichten:

  1. Funktion des Benutzers – das Feld, das die Funktion definiert, ist konfigurierbar (Kategorie, Titel oder Standardgruppe des GLPI), über den Parameter role_source.
  2. Mit der Funktion verknüpfte Berechtigungsgruppen – wiederverwendbare CRUD-Sätze, die der Funktion zugewiesen sind.
  3. Direkt mit dem Benutzer verknüpfte Berechtigungsgruppen – punktuelle Ausnahmen, ohne die Funktion anzufassen.
  4. Individuelle Berechtigungen, die direkt dem Konto zugewiesen sind.
#SchichtHerkunft im BenutzerdatensatzWofür sie dient
1FunktionKategorie / Titel / Standardgruppe (Konfiguration role_source)Basiszugriff nach Funktion
2Berechtigungsgruppe der FunktionVerknüpfung Funktion → GruppeWiederverwendbares Paket für mehrere Funktionen
3Berechtigungsgruppe des BenutzersVerknüpfung Benutzer → GruppeAusnahme, ohne die Funktion zu ändern
4Individuelle BerechtigungDirekt am KontoPunktuelle Feinjustierung

Im Abfrage-Reiter zeigt das Modul die effektive Berechtigung jedes Benutzers mit Badges an, die angeben, aus welcher Schicht jeder Zugriff stammt (Funktion, Gruppe oder Individuell) – das macht die Auflösung prüfbar statt zur Blackbox.

Diagnose direkt in der Datenbank (SQL)

Bei einem Audit lautet die häufigste Frage: „Wer darf in jedem System schreiben (erstellen, aktualisieren oder löschen)?“ Das lässt sich mit einem SELECT direkt auf der Tabelle der Berechtigungen pro Funktion beantworten. Das folgende Beispiel geht von der Standardquelle aus (usercategories_id, die Kategorie des Benutzers) und listet nur diejenigen, die irgendein Schreib-Flag haben:

-- Cargos (Categoria do usuario) com poder de ESCRITA em cada sistema externo
-- Fonte de cargo padrao = usercategories_id
SELECT s.name                                AS sistema,
       COALESCE(m.name, '(sistema inteiro)') AS modulo,
       c.name                                AS cargo,
       p.can_create, p.can_update, p.can_delete
FROM        glpi_plugin_nextool_accessmatrix_perm_categories p
JOIN        glpi_plugin_nextool_accessmatrix_systems s
              ON s.id = p.plugin_nextool_accessmatrix_systems_id
LEFT JOIN   glpi_plugin_nextool_accessmatrix_modules  m
              ON m.id = p.plugin_nextool_accessmatrix_modules_id
JOIN        glpi_usercategories c
              ON c.id = p.usercategories_id
WHERE       p.can_create = 1 OR p.can_update = 1 OR p.can_delete = 1
ORDER  BY   s.name, cargo;

Dieses SELECT ist rein lesend und deckt die Funktionsschicht (die Basis) ab. Die endgültige effektive Berechtigung – unter Einbeziehung von Gruppen und individuellen Anpassungen mit dem ODER der 4 Schichten – wird vom Modul in PHP aufgelöst; nutzen Sie den Abfrage-Reiter für den konsolidierten Wert pro Benutzer. Das SQL dient für schnelle Audit-Durchläufe, bevor Sie tiefer gehen.

Migration zwischen Umgebungen: Import/Export per CSV

Die Matrix in der Testumgebung zu konfigurieren und in die Produktion zu übernehmen, ohne alles von Hand neu anzulegen, erfolgt per Import/Export als CSV. Der Export erzeugt eine einzige Datei mit Systemen, Modulen und Berechtigungen im Format:

type,system_name,module_name,comment,is_active,role_source,role_id,can_create,can_read,can_update,can_delete
system,ERP Protheus,,Gestao financeira,1,,0,0,0,0,0
module,ERP Protheus,Contas a Pagar,,1,,0,0,0,0,0
permission,ERP Protheus,Contas a Pagar,,0,usercategories_id,5,1,1,1,0
permission,ERP Protheus,,,0,groups_id,12,0,1,0,0

Die Spalte type unterscheidet Zeilen für System, Modul und Berechtigung; in den Berechtigungszeilen gibt role_source an, aus welcher Schicht diese Regel stammt. Vor dem Anwenden zeigt das Modul eine Vorschau der Änderungen und speichert ein automatisches Backup (JSON-Snapshot) des vorherigen Zustands, um zurückzusetzen, falls etwas anders ausfällt als erwartet.

Integration ins Ticket

Im Formular jedes Tickets erscheint ein eigener Reiter, der den Anforderer bereits vorauswählt und dessen effektive Berechtigungen anzeigt. Wenn ein Ticket der Art „Schalten Sie Person X im Modul Y des ERP frei“ eingeht, sieht der Techniker sofort, was dieser Benutzer in jedem System bereits hat – ohne das Ticket zu verlassen, ohne einen anderen Bildschirm zu öffnen, ohne von besagter Tabelle abhängig zu sein.

Stolperfallen aus der Praxis (der häufige Fehler ist …)

Drei Details zeigen sich erst, wenn die Matrix im Einsatz ist, und stammen aus direkter Betriebserfahrung:

  • ODER entzieht nie. Der häufige Fehler ist, einen Zugriff „wegnehmen“ zu wollen, indem man die Flags in der individuellen Schicht des Benutzers abwählt, während eine Berechtigungsgruppe dieses CRUD weiterhin gewährt. Da die Auflösung ODER ist (die großzügigste gewinnt), gilt die Berechtigung weiter. Es gibt kein „Verweigern“, das ein „Gewähren“ einer anderen Schicht überschreibt: Um wirklich zu entziehen, entfernen Sie es aus der Schicht, die es gewährt.
  • Ein Benutzer ohne ausgefüllte Funktion erbt die Funktionsmatrix nicht. Wenn Sie die Quelle auf Kategorie gesetzt haben, im Benutzerkonto aber die Kategorie leer ist, greift Schicht 1 schlicht nicht – es gelten nur die Gruppen des Benutzers und die individuellen Berechtigungen. Das Modul weist in der Abfrage darauf hin, aber das Symptom im Alltag lautet: „Ich habe die Funktion konfiguriert, und der Benutzer hat immer noch keinen Zugriff.“ Prüfen Sie das Funktionsfeld im Benutzerdatensatz, bevor Sie das Modul verdächtigen.
  • Das Wechseln der Funktionsquelle löscht Ihre Konfiguration nicht. Wenn Sie role_source von Kategorie auf Titel umstellen, verschwinden die nach Kategorie gespeicherten Berechtigungen nicht – sie ruhen in der Datenbank und werden nicht mehr angezeigt, solange nicht ihr Modus aktiv ist. Kehren Sie zur alten Quelle zurück, ist alles wieder da. Experimentieren ist also gefahrlos, aber wissen Sie: „Alles ist weg“ nach dem Wechsel der Quelle ist fast immer genau das, kein Datenverlust.

Die Matrix einmal zu modellieren ist der leichte Teil; sie bei Austritten, Funktionswechseln und wiederkehrenden Audits stimmig zu halten, ist Betriebssupport. Genau das macht NexTool: Lernen Sie Access Matrix kennen oder sprechen Sie mit dem GLPI-Betriebssupport von NexTool, um die Zugriffssteuerung auf externe Systeme mit Governance und Audit-Trail aufzubauen.


Geprüft vom Team der NexTool Solutions.

Häufig gestellte Fragen

Erfassen Sie das ERP als externes System samt seinen Modulen, konfigurieren Sie die CRUD-Matrix pro Funktion und nutzen Sie den Abfrage-Reiter, um die effektive Berechtigung jedes Benutzers mit Badge der Quelle zu sehen. Für schnelle Durchläufe listet ein SELECT auf den Tabellen glpi_plugin_nextool_accessmatrix_perm_* mit dem Filter can_delete = 1 die Funktionen mit Löschrecht. Die endgültige Auflösung (mit Gruppen und individuellen Anpassungen) erscheint konsolidiert in der Abfrage des Moduls.

Nein. Es ist kein Proxy und greift nicht in die Anmeldung am ERP/CRM ein. Es ist die maßgebliche Entscheidungsmatrix im GLPI: Es dokumentiert, löst auf und zeigt an, wer welche CRUD-Berechtigung haben soll, als Grundlage für Bereitstellung und Audit. Die technische Sperre erfolgt weiterhin im externen System selbst; Access Matrix ist die verlässliche Quelle dafür, was bereitzustellen ist.

Mit ODER-Logik: Für jedes Flag (Erstellen, Lesen, Aktualisieren, Löschen) gilt: Gewährt irgendeine Schicht es, hat der Benutzer es – das Ergebnis ist das max() aus Funktion, Gruppen der Funktion, Gruppen des Benutzers und individueller Berechtigung. Die praktische Folge: Sie entziehen keinen Zugriff, indem Sie ihn in einer Schicht abwählen, solange eine andere ihn noch gewährt.

Ja, per Import/Export als CSV. Der Export erzeugt eine einzige Datei mit Systemen, Modulen und Berechtigungen (Spalten type, system_name, module_name, role_source, role_id und die vier CRUD-Flags). Beim Import zeigt das Modul eine Vorschau der Änderungen und speichert vor dem Anwenden ein automatisches Backup (JSON-Snapshot) des vorherigen Zustands, sodass Sie zurücksetzen können.

Das ist über den Parameter role_source konfigurierbar: Es kann die Kategorie des Benutzers (usercategories_id, Standard), der Titel (usertitles_id) oder die Standardgruppe (groups_id) sein. Achtung: Ein Wechsel der Quelle löscht die bereits in der vorherigen Quelle gespeicherten Berechtigungen nicht; sie ruhen und erscheinen wieder, wenn Sie den Modus zurückstellen.

Brauchen Sie Hilfe?