Rechteverwaltung mit Solr
Was bedeutet Rechteverwaltung für eine Suchmaschine?
Rechteverwaltung ist natürlich nicht das erste Thema, das man mit einer Suchmaschiene in Verbindung bringt. Jedoch wird dieses Thema für viele Suchlösungen immer wichtiger. Dabei geht es nicht nur darum, welche Inhalte überhaupt im Index landen sollen, sondern viel mehr, welche Treffer der jeweilige Benutzer angezeigt bekommt. Hierbei ist es wichtig, dass jeder Benutzer nur Treffer angezeigt bekommt auf die er auch eine Zugriffsberechtigung hat.
Als Beispiel nehmen wir das Indexieren eines Filesystems in dem sich Dokumente aus den Bereichen Vertrieb, Personal und Entwicklung befinden. Dass jeder Angestellte die Dokumente aus der Entwicklung sieht ist vielleich noch eher unkritisch, da er sowieso immer auf dem aktuellsten Stand sein sollte und vermutlich auch Zugriff auf alle Dateien der Entwicklung hat. Kritischer ist dann schon eher wenn Mitarbeiter aus Vertrieb und Entwicklung Dokumente aus dem Personalbereich sehen könnten. Der Zugriff auf die jeweiligen Dokumente ist im Filesystem durch Freigaben etc. geregelt; dies gilt jedoch nicht standardmäßig für die indexierten Dokumente. Es wäre möglich seinen Namen oder den eines Kollegen zu suchen und über den Titel des Treffers oder den Highlight, Text Informationen zu bekommen. Beispielsweise könnte man die letzte Gehaltserhöhung des Kollegen herausfinden oder auf ein bereits formuliertes Kündigungsschreiben an sich selbst stoßen.
Ziel ist es also, das jeder Benutzer seine persönliche Trefferliste bekommt.
Gibt es bereits Implementierungen für Rechteverwaltung?
Es gibt durchaus bereits einige Implementierungen die sich mit der Rechteverwaltung befassen. Dazu gehören zum Beispiel anbindungen von Solr an verschiedene Web-CMS-Systeme, wie Drupal, Typo3 oder Joomla (wird aktuell von unseren Entwicklern implementiert). Darüber hinaus existieren aber auch spezielle Indexer, die Rechte mit in den Index aufnehmen, wie z.B. Manifold.
Wie funktioniert die Rechteverwaltung ?
Es gibt hier verschiedene Ansätze. Der meist verwendete ist aktuell jedoch die Berechtigungen zu einem Document mit in den Index aufzunehmen. Dabei werden alle Allows und Denys mit aufgenommen. Bei einer Abfrage muss dann dafür gesorgt werden das mit dem fq-Parameter die Treffermenge auf den aktuellen Benutzer eingeschränkt wird. Im Falle einer Manifoldindexierung des Filesystems müssen dann alle Gruppen des Benutzers und der Benutzer selbst als Einschränkung mit Übertragen werden.
Vorteil dieser Methode sind sehr schnelle Abfragen, da die Einschränkung auf den Benutzer als Subdokumentenbestand im Filtercache landet und alle weiteren Abfragen auf diesen Bestand gemacht werden.
Nachteil ist die aktualität der Berechtigungsprüfung, da diese sich immer nur bei einer neuen Indexierung updated. Da sich die Rechte auf ein Dokument aber eher selten ändern kann dies meist vernachläsigt werden. Im Normalfall ändert man eher die Gruppenzugehörigkeit eines Benutzers. Diese würde dann auch sofort bei der nächsten Abfrage aktiv werden da die Gruppe in der FQ dann fehlt.
Eine andere Methode wäre die Rechteüberprüfung zur Abfragezeit. Hierbei würden die Treffer mit einem externen Berechtigungssystem abgeglichen werden.
Vorteil ist dabei die sofortige aktualisierung von Berechtigungen.
Nachteil ist ein unter Umständen erheblicher Performanceverlust.
Newsletter
Anmelden |