«

»

Finden von ähnlichen Accounts über die DB-Console (Version 2.1)

AD-Abfrage
Es stellt sich immer wieder die Frage, wer einem bestimmten Account eigentlich am ähnlichsten ist. Zum Beispiel, wenn man herausfinden möchte, wer alles zu einer bestimmten Abteilung gehört. Diese Frage ist vor allem wichtig, um auf einfache Art die korrekte Konfiguration der Gruppenmitgliedschaften zu überprüfen.

1. Gemeinsamkeiten von Accounts

Wenn alles stimmt, müsste die eigenen Kollegen die meisten Gemeinsamkeiten aufweisen!

Das folgende Script (das auch bald Einzug in die migRaven halten wird) basiert auf der Annahme, dass die Personen aus einer Abteilung, so man über Gruppen im AD arbeitet, die meisten Gemeinsamkeiten –> gleiche Gruppenmitgliedschaften haben müssten.

Solange die Funktion noch nicht direkt in migRaven integriert ist, ergibt sich die Möglichkeit über die Web-Schnittstelle der Datenbank von migRaven:

http://localhost:7474/webadmin/#/console/  oder   http://localhost:7474/browser/

Aktuell muss das Script noch direkt über die Console der Datenbank ausgeführt werden. Wichtig ist die Node(ID), die den ausgehenden Account oder Gruppe darstellt. Diese ID findet man in der migRaven Oberfläche in der Active Directory Visualisierung:

image

Suchen Sie nach dem interessanten Account und merken Sie sich den Wert “ID des Knoten”: 391951

image

Passen Sie dann bitte noch folgendes Script an:

START u=node(391951) 
MATCH p= u<-[:rel_member*]-gg-[:rel_member*0..]->(n{type:"person"}) 
WHERE NOT (gg.name = "domänen-benutzer" OR gg.name = "benutzer" OR gg.name = "root") 
AND NOT (n.name = "Everyone" OR n.name = "Authenticated Users") AND NOT id(n) = id(u) 
RETURN n.name, id(n),COUNT(nodes(p)) AS gg ORDER BY gg DESC LIMIT 50;

2. Gemeinsamkeiten von Gruppen

Wenn u eine Gruppe ist:

START u=node(211) 
MATCH p= u-[:rel_member]->x<-[:rel_member*]-gg-[:rel_member*]->(n{type:"person"}) 
WHERE NOT (gg.name = "domänen-benutzer" OR gg.name = "benutzer" OR gg.name = "root") AND NOT id(n) = id(u) 
RETURN n.name, id(n),COUNT(nodes(p)) AS gg ORDER BY gg DESC LIMIT 50;

Dann bekommt man ein entsprechende Ergebnisliste:

Der Wert “gg” entspricht den gemeinsamen Gruppenmitgliedschaften mit dem entsprechenden Account.

Heißt im Klartext: Albert Herum hat mit Thomas Gomell 92 gemeinsame Gruppenmitgliedschaften.

image

Wenn alle Gruppenmitgliedschaften korrekt konfiguriert sind, dann sollten die Accounts aus der gleichen Abteilung mit den meisten Gemeinsamkeiten auftauchen. Wenn dort andere Personen stehen, ist dies ein eindeutiges Indiz dafür, dass da was nicht stimmt.

3. Gemeinsamkeiten zweier Accounts

Jetzt ist natürlich noch interessant, woher denn die Gemeinsamkeiten kommen. Dafür nutzen Sie die folgende Abfrage:

START u=node(391703), n=node(391704) 
MATCH p= u<-[:rel_member*]-gg-[:rel_member*0..]->(n) 
RETURN DISTINCT(gg.name) ORDER BY gg.name;

Die beiden IDs 391703 und 391704 müssen durch die IDs der von Ihnen untersuchten Accounts ersetzt werden.

Und Sie bekommen eine Liste aller gemeinsamer Gruppen:

image