2017-03-02 2 views
2

Ich erhalte nur Elasticsearch wissen, und ich frage mich, ob es überhaupt meinen Fall paßt:Trennung Datenzugriff mit Elasticsearch

ein System überlegen, wo Unternehmen (mit mehreren Mitarbeitern) können ihre Kunden registrieren und verwalten, und senden Sie Dokumente an ihre Kunden.

Jetzt möchte ich Unternehmen ermöglichen ihre Dokumente zu durchsuchen - aber nur ihre, nicht die Dokumente anderer Unternehmen. Mit anderen Worten: Wie werden die Daten dieser Unternehmen für die Suche getrennt? Wie kann dies mit elasticsearch umgesetzt werden?

Soll diese Trennung von elasticsearch selbst gehandhabt werden? I.e. Es gibt eine Zuordnung zwischen den Firmen in meinem System und einem verwandten Benutzer für elasticsearch. Oder soll das vom Backend meines Systems gehandhabt werden? I.e. Das Backend entscheidet irgendwie (wie?), nur Suchergebnisse für diese bestimmte Firma anzuzeigen. Also würde nur ein Benutzer, nämlich das Backend meines Systems, auf die Ergebnisse von elasticsearch zugreifen und diese filtern. Aber ist das sinnvoll?

Ich bin sicher, dass es eine Fülle von Informationen darüber gibt. Bitte gib mir nur einen Hinweis, weil ich nicht weiß, wonach ich suchen soll. Die Suche nach Elasticsearch-Authentifizierung/-Autorisierung beispielsweise liefert nur Ergebnisse darüber, wer generell Zugang zum Suchsystem erhält - nicht über ein Muster zur Lösung dieser Trennung.

Vielen Dank im Voraus!

Antwort

4

Elasticsearch allein unterstützt keine Autorisierung und Authentifizierung, Sie müssen dies über Plugins hinzufügen, von denen ich zwei kenne. Shield ist die offizielle Lösung, die Teil des X-Packs ist und Sie müssen Elastic bezahlen, wenn Sie es verwenden möchten. SearchGuard ist eine Open-Source-Alternative mit Enterprise-Upgrades, die Sie kaufen können. Beide ermöglichen es Ihnen, differenzierte Zugriffsrechte für verschiedene Benutzer zu definieren. Was Sie wahrscheinlich tun möchten, ist, jedem Unternehmen einen eigenen Index für seine Dokumente zu geben und dann seinen Benutzer einzuschränken, nur diesen Index lesen/schreiben zu können. Wenn Sie jedoch alle Dokumente in einem einzigen Index haben möchten, können Sie auch Beschränkungen auf Dokumentebene hinzufügen, so dass jeder den gleichen Index abfragt, aber nur Ergebnisse für sein Unternehmen erhält. Je nachdem, wie viele Unternehmen Sie erwarten, ist dies sinnvoller, um nicht zu viele Indizes und Shards zu haben, aber ich würde vermuten, dass ein Index pro Unternehmen der beste Weg wäre.

Ohne diese Plugins müssten Sie auf etwas auf der HTTP-Schicht zurückgreifen, zum Beispiel auf einen nginx Reverse Proxy, der Anfragen anhand der in den URLs enthaltenen Indexnamen filtert, aber ich würde dringend davon abraten, viel Schmerz liegt so!

+0

danke für deine antwort, Sönke! habe mich weiter gelesen und ich denke, ich bekomme die Idee. Einen schönen Abend! –