«

»

Effektive Berechtigungen auf Verzeichnisse ermitteln

Projektbezogene Abfrage

Mit folgendem Cypher-Befehl können Sie sich anzeigen lassen, wer auf Ihre Verzeichnisse welche Berechtigungen hat.

1. Voraussetzung

Die Auswertung basiert auf der migRaven-Datenbank. Sie können sich nur die Berechtigungen von Verzeichnissen anzeigen lassen, die Sie mit migRaven gescannt haben.

In einem Webbrowser können Sie mit  „localhost:7474“  die migRaven-Datenbank aufrufen. Den Abfrage-Befehl kopieren Sie in das obere mittlere Feld. Ausgeführt wird der Befehl durch Anklicken des Pfeils ganz rechts.

Datenbankaufruf

Aufruf der Datenbank in einem Webbrowser

2. ID des Verzeichnisses

Mit der WHERE-Klausel können Sie sich ein bestimmtes Verzeichnis samt Unterverzeichnissen anzeigen lassen. Dazu ist die ID des Verzeichnisses anzugeben. Ermitteln können Sie die ID in migRaven mit der rechten Maustaste auf das gewünschte Verzeichnis im Ausgangszustand.

ID eines verzeichnisse

Ermittlung der ID eines Verzeichnisses in migRaven

Die WHERE-Klausel können Sie auch entfernen. Dann werden alle Verzeichnisse und Berechtigungen angezeigt. Bei vielen Daten kann das lange dauern. Und beachten Sie, dass im Browser nur 1000 Zeilen ausgegeben werden.

3. Abfrage-Befehl

3.1. für ein Ausgangsverzeichnis

Listrechte (Propagation und Standard Read+execute werden automatisch unterschieden.

——————————————————————————————————————————————————————————————-

MATCH (ini)-[:rel_child0*0..]->(pfade)<-[r1:rel_right0 {explicit:1}]-r
WHERE id(ini) = 3490      //  ID des gewünschten Verzeichnisses, muss angepasst werden
WITH pfade 
MATCH (pfade)<-[r1:rel_right0 ]-ace-[r0:rel_ace]->a-[:rel_member*0..]->g 
WHERE r1.explicit=1         //  nur explizite Rechte, kann entfernt werden
RETURN DISTINCT pfade.path,
CASE
WHEN pfade.inheritance = "1" THEN "ein" ELSE "aus" END AS Vererbung, 
g.name,r1.explicit, 
CASE
WHEN ace.ace = "278" or ace.ace = "1048854" THEN "write"
WHEN ace.ace = "131209" or ace.ace= "1179785" THEN "read"
WHEN (ace.ace = "131241" or ace.ace ="1179817") AND (ace.ace_flags = "0" OR ace.ace_flags = "16" 
   OR ace.ace_flags = "2" OR ace.ace_flags = "6" OR ace.ace_flags = "18") THEN "List"
WHEN (ace.ace = "131241" or ace.ace ="1179817") and (ace.ace_flags = "3" OR ace.ace_flags = "7" 
   OR ace.ace_flags = "19") THEN "read + execute"
WHEN ace.ace = "131487" or ace.ace= "1180063" THEN "read + write"
WHEN ace.ace = "131519" or ace.ace= "1180095" THEN "read, execute + write"
WHEN ace.ace = "1245631" or ace.ace= "197055" THEN "modify"
WHEN ace.ace = "1180159" THEN "modify plus"
WHEN ace.ace = "2032127" THEN "fullcontrol"
WHEN ace.ace = "65536" THEN "delete"
ELSE "Special Permission" END as Permission, 
CASE
WHEN ace.type = "0" THEN "zulassen"
WHEN ace.type = "1" THEN "verweigern"
END AS Typ,
CASE
WHEN ace.ace_flags = "0" OR ace.ace_flags = "16" THEN "100"
WHEN ace.ace_flags = "1" THEN "101"
WHEN ace.ace_flags = "2" OR ace.ace_flags = "6" OR ace.ace_flags = "18" THEN "110"
WHEN ace.ace_flags = "3" OR ace.ace_flags = "7" OR ace.ace_flags = "19" THEN "111"
WHEN ace.ace_flags = "9" OR ace.ace_flags = "13" OR ace.ace_flags = "25" THEN "001"
WHEN ace.ace_flags = "10" OR ace.ace_flags = "14" THEN "010"
WHEN ace.ace_flags = "11" OR ace.ace_flags = "15" OR ace.ace_flags = "27" THEN "011"
END AS Propagation
ORDER BY pfade.path;

——————————————————————————————————————————————————————————————-
Mit dieser Abfrage können Sie die Berechtigungen auf ein bestimmtes Verzeichnis samt Unterverzeichnissen ermitteln. Die ersten fünf Zeilen fragen die Datenbank ab. Die nachfolgenden dienen der übersichtlichen Aufbereitung des Ergebnisses.

3.2. Abfrage-Befehl für ein Verzeichnis im Endzustand

Sie können sich auch die Berechtigten eines Verzeichnisses aus dem Endzustand anzeigen lassen. Die Kantenwerte dafür sind in anderen „Tabellen“ gespeichert. Diese wurden hier entsprechend angepasst. Die ID für das gewünschte Verzeichnis müssen Sie sich aus dem Fenster „Endzustand“ holen.
——————————————————————————————————————————————————————————————-

MATCH (ini)-[:rel_child1*0..]->(pfade)<-[r1:rel_right1 {explicit:1}]
-ace-[r0:rel_ace]->a-[:rel_member1*0..]->g-[:rel_member*0..]->m1
WHERE  m1.type ='person' AND id(ini) = 5218   //  ID des gewünschten Verzeichnisses, muss angepasst werden
RETURN  DISTINCT pfade.path AS Verzeichnis,
g.name AS Objektname,r1.explicit,
CASE
WHEN ace.ace = "278" or ace.ace = "1048854" THEN "write"
WHEN ace.ace = "131209" or ace.ace= "1179785" THEN "read"
WHEN (ace.ace = "131241" or ace.ace ="1179817") and (ace.ace_flags = "0" OR ace.ace_flags = "16") THEN "list"
WHEN ace.ace = "131241" or ace.ace ="1179817" THEN "read + excecute"
WHEN ace.ace = "131487" or ace.ace= "1180063" THEN "read + write"
WHEN ace.ace = "131519" or ace.ace= "1180095" THEN "read, execute + write"
WHEN ace.ace = "1245631" or ace.ace= "197055" THEN "modify"
WHEN ace.ace = "1180159" THEN "modify plus"
WHEN ace.ace = "2032127" THEN "fullcontrol"
WHEN ace.ace = "65536" THEN "delete"
ELSE "Special Permission" END as Permission,
CASE
WHEN ace.type = "0" THEN "zulassen"
WHEN ace.type = "1" THEN "verweigern"
END AS Typ,
CASE
WHEN ace.ace_flags = "0" OR ace.ace_flags = "16" THEN "100"
WHEN ace.ace_flags = "1" THEN "101"
WHEN ace.ace_flags = "2" OR ace.ace_flags = "6" OR ace.ace_flags = "18" THEN "110"
WHEN ace.ace_flags = "3" OR ace.ace_flags = "7" OR ace.ace_flags = "19" THEN "111"
WHEN ace.ace_flags = "9" OR ace.ace_flags = "13" OR ace.ace_flags = "25" THEN "001"
WHEN ace.ace_flags = "10" OR ace.ace_flags = "14" THEN "010"
WHEN ace.ace_flags = "11" OR ace.ace_flags = "15" OR ace.ace_flags = "27" THEN "011"
END AS Propagation,m1.name,
CASE
WHEN pfade.inheritance = "1" THEN "ein" ELSE "aus" END AS Vererbung
ORDER BY pfade.path;

——————————————————————————————————————————————————————————————-
Hinzugekommen sind zusätzlichen Einträge mit Listrechten. Und es werden nur exlizite Berechtigungen ausgegeben.

4. Ausgabe

Es wird eine Tabelle ausgegeben mit folgendem Inhalt:

  • Verzeichnis
  • Vererbung: ja (Standard) oder nein (Vererbungsunterbrechung für das Verzeichnis)
  • Berechtigter
  • Recht explizit hier vergeben (1) oder von oben geerbt (0)
  • Permission (Berechtigung)
  • Propagation: Verbreitung der Berechtigung auf diesen Ordner (100), auf Unterordner (010) oder Dateien (001), oder eine Kombination dieser. Üblich sind „111“ für Standard-Vererbung  und „100“ für Listrechte.

Es wird das gewünschte Verzeichnis einschließlich der Unterverzeichnisse angezeigt.

5. Export als CSV-Datei

Die Liste kann über den Export-Button als CSV-Datei ausgegeben werden.

Ausgabe

Ausgabe als CSV-Datei

6. In Excel importieren

Beim Einlesen in Excel ist zu beachten, dass die Datei als UTF-8-Datei und mit dem Komma als Trennzeichen eingelesen wird.

 

aus externer Datei

Externe Datei aus Text einlesen

 

Dateiursprung UTF-8

Dateiursprung UTF-8 einstellen, damit Umlaute richtig dargestellt werden.

 

Trennzeichen Komma

Trennzeichen Komma, da in der CSV-Datei dieses Trennzeichen verwendet wird.