«

»

migRaven Report API mit Abfragesprache CYPHER

migRaven nutzt eine Datenbank, die auf der Basis der Graphentheorie arbeitet. Es kommt die Graphdatenbank „neo4j“ von Neotechnology zum Einsatz. Diese Datenbank gehört zur Kategorie der noSQL Datenbanken.

Auf die migRaven-Datenbank kann über einen Webbrowser zugegriffen werden. Der Zugriff erfolgt über den Port 7474:  http://localhost:7474/browser/.

Mit der Abfragesprache CYPHER können Abfragen vorgenommen werden. Bevor wir uns einige Beispiel-Befehle ansehen, einige Vorbemerkungen zum Umgang mit der Weboberfläche.

Warnung: es sollten und dürfen keine Abfragen genutzt werden, die Datensätze in der DB erzeugen oder modifizieren. Dies kann zur Inkonsistenz der Daten führen.

1. Die Weboberfläche der migRaven-Datenbank

Mit http://localhost:7474/browser/ wird die Weboberfläche der migRaven-Datenbank aufgerufen.

Aufbau der Weboberfläche

Neo4j-Datenbank

 

Erst mit Anklicken der drei Kreise links oben, dem Overview, werden die „Database Informationen“ sichtbar.

Oben in der Mitte können Abfrage-Befehle eingegeben werden.

Für jede Abfrage erscheint darunter ein Fenster mit den Ergebnissen. Die Ergebnisse können grafisch (wie hier) oder in Textform dargestellt werden. Mit den beiden Buttons (Graph und Rows) am linken Rand des Fensters wird die Darstellungsform gewählt.

In der Kopfzeile des Fensters rechts oben finden wir vier weitere Buttons:

  1. Der erste ermöglicht die Ausgabe des Ergebnisses in den vier gezeigten Formaten (SVG, PNG, JSON, CSV).
  2. Der Pin sorgt dafür, dass dieses Fenster oben bleibt, neue Ergebnisfenster werden darunter angelegt.
  3. Mit den Pfeilen können Sie das Fenster auf Bildschirmgröße vergrößern.
  4. Der letzte Button schließt das Fenster.

Neo4j-Oberfläche

2. Datenbank-Abfragesprache Cypher

Wichtig zu wissen ist, dass die Datenbank keine relationale Datenbank ist, sondern eine Graph-Datenbank mit dem Namen Neo4j.
Sie besteht nicht aus Tabellen, sondern aus Knoten und Verbindungen. Knoten sind bei uns z.B. Nutzer, Gruppen und Computer. Eine Verbindung beschreibt die Beziehung zwischen zwei Knoten, das können Mitgliedschaften sein, aber auch richtungsorientierte Relationen sind möglich. Sowohl Knoten als auch Verbindungen können zahlreiche Eigenschaften erhalten, die somit auch auswertbar sind.

Cypher ist eine Abfragesprache für diese Datenbank. Cypher ist mit SQL vergleichbar.

Die Grundstruktur sieht folgendermaßen aus:

MATCH         als Muster für den Datenbereich (Knoten und Verbindungen)
WHERE         für Bedingungen, Filter
WITH          Verkettung von Abfragen
RETURN        für die Rückgabewerte
  ORDER BY    für Sortierung
  LIMIT       für Begrenzung der Ergebnisanzahl

Parallelen zu SQL sind erkennbar.

Wichtig: Bei Feldnamen und abzufragenden Zeichenketten ist die Groß- und Kleinschreibung zu beachten.

Weitere in der migRaven-Datenbank gespeicherte Objekt-Attribute finden Sie beim Report-Generator.

3. AD-Abfragen

AD-Abfragen beziehen sich auf die Daten, die Sie beim AD-Scan in migRaven gescannt und damit in der migRaven-eigenen Datenbank gespeichert haben. Das sind Nutzer, Computer, Gruppen und Mitgliedschaften der gescannten Domänen.

3.1. Benutzer aus der Datenbank auslesen

MATCH (User) WHERE User.type='person' RETURN *
Eigenschaften eines Nutzers anzeigen:    MATCH (User) WHERE User.type='person' and User.cn='hans dampf' RETURN *

Bem.: Der Nutzername muss durch einen Ihrer Nutzernamen ersetzt werden.

3.2. Gruppen

Alle Gruppen anzeigen                    MATCH (Group) WHERE Group.type='group' RETURN *
Eigenschaften einer Gruppe anzeigen:     MATCH (Group) WHERE Group.type='group' and Group.cn='verkauf_g' RETURN *

Bem.: Der Gruppenname muss durch einen Ihrer Gruppennamen ersetzt werden.

3.3. Computer

Alle Computer anzeigen:                  MATCH (Objekt) WHERE Objekt.type='computer' RETURN *
Eigenschaften eines Computers anzeigen:  MATCH (Objekt) WHERE Objekt.type='computer' and Objekt.name = 'nb-dell6400' RETURN *

Bem.: Der Computername ’nb-dell6400′ muss ersetzt werden.

3.4. Mitglieder einer Gruppe

Alle Mitglieder einer Gruppe anzeigen:   MATCH (Group)-[:rel_member]->(person) WHERE Group.cn='technik_g' RETURN *

Bem.: Der Gruppenname muss durch einen Ihrer Gruppennamen ersetzt werden.

3.5. Mitgliedschaften eines Nutzers

Alle Mitgliedschaften eines Nutzers anzeigen: MATCH (User)-[r:rel_member]-(Group) WHERE User.cn='hans dampf' RETURN *

Bem.: Der Nutzername muss durch einen Ihrer Nutzernamen ersetzt werden.

3.6. Zeichenkette in Objektnamen und in den OUs suchen

Bei der Suche von Zeichenketten in Objekt-Namen und OUs stehen in Cypher drei Abfragebefehle zur Verfügung:

CONTAINS  „         –  enthält
STARTS WITH  „   –  beginnt mit
ENDS WITH  „„       –  endet mit

Da im distinguishedname nicht nur der Name, sondern die Lage des Objekts im AD, hinterlegt ist, kann darüber die OU des Objekts ermittelt werden.

 

3.6.1. Suche einer Zeichenkette im Objektnamen in einer bestimmten OU

MATCH (Objekt) WHERE Objekt.sAMAccountName CONTAINS "_mx" and Objekt.distinguishedname CONTAINS "ou=technik"
RETURN Objekt.sAMAccountName,Objekt.distinguishedname

Problem: bei einer kurzen Zeichenkette bekommt man möglicherweise mehr Ergebnisse als gewünscht.

3.6.2. Suche einer Zeichenkette, mit der der Objektname beginnt

MATCH (Objekt) WHERE Objekt.sAMAccountName STARTS WITH "8M_" and Objekt.distinguishedname CONTAINS "ou=technik"
RETURN Objekt.sAMAccountName,Objekt.distinguishedname

3.6.3. Suche einer Zeichenkette, mit der der Objektname endet

MATCH (Objekt) WHERE Objekt.sAMAccountName ENDS WITH "_f" and Objekt.distinguishedname CONTAINS "ou=technik"
RETURN Objekt.sAMAccountName,Objekt.distinguishedname

Die Zeichenketten müssen der Aufgabenstellung entsprechend angepasst werden.
Wichtig: Bei Feldnamen und Zeichenketten ist die Groß- und Kleinschreibung zu beachten.

 

4. Projektbezogene Abfragen

Projektbezogene Abfragen beziehen sich auf die Daten, die Sie bei Projekten in migRaven gescannt und damit in der migRaven-eigenen Datenbank gespeichert haben. Das sind die Shares, Verzeichnisse und Berechtigungen der in migRaven durchgeführten Projekte.

4.1. Anzeige der „Unknown sid“ (tote bzw. verwaiste SIDs)

Mit diesem Beispiel werden alle Verzeichnisse aufgelistet, bei denen migRaven ein „Unknown sid“ ausgibt:

MATCH (Objekt)<-[:rel_ace]-Ace-[Right:rel_right0]->Path  
WHERE Objekt.name = "Unknown sid"  
RETURN  Path.path, Ace.ace, Ace.ace_flags, Ace.sid, Right.explicit

Es werden die Einträge angezeigt, bei denen es in migRaven zur SID keinen Objektnamen gibt. Die Ursache kann sein, dass das Objekt gelöscht wurde, dann ist das eine tote SID. Es kann aber auch sein, dass das Objekt zu einer anderen Domäne gehört, die Sie mit migRaven nicht gescannt haben. Auch dann ist das für migRaven eine „Unknown SID“. Klären können Sie das, indem Sie sich mit Windows-Bordmitteln die Berechtigungen auf dem angegebenen Verzeichnis anzeigen lassen. Wenn auch Windows die SID nicht durch einen Objektnamen ersetzen kann, ist es eine tote SID.