Back to top

Sicherheit: Early Binding gegen Late Binding

Von Paul Nelson, leitender Architekt bei Search Technologies

 

Dies ist der zweite Artikel in unserer Reihe der "Graduate Level Courses", die einen kompromisslosen Ansatz zur Implementierung der Document-Level-Security bei Suchanwendungen beschreiben.  Der vorangehende Artikel hat die Ziele und Herausforderungen definiert.

Die Sicherheit bei Suchmaschinen befasst sich hauptsächlich damit, Dokumente aus den Suchergebnissen heraus zu filtern. Dies nennt man entweder "Sicherheitsfiltern" oder "Sicherheitsbeschneiden" der Ergebnisse. Von der höchsten Ebene aus gesehen gibt es hierbei zwei Wege: 1) Indem die Abfrage modifiziert wird (Early Binding), oder 2) indem die Ergebnisse ausgesiebt werden (Late Binding). 

 

Vorsicht, Spoiler: Early Binding ist die bessere Wahl (bei weitem). 

 

Option 1: Die Abfrage modifizieren (Early Binding) 

Die erste (und beste) Methode zum Filtern der Ergebnisse ist, die Abfrage an der Suchmaschine zu modifizieren, um dadurch einen Filter hinzuzufügen, der die Suche auf die Dokumente begrenzt, auf die der Benutzer Zugriff hat. Diese Methode nennt man "Early Binding" oder "Vorbeschneidung". Die Architektur sieht wie folgt aus:

 

 

Nehmen wir für dieses Beispiel an, dass der Benutzer "johndoe" Mitglied der Gruppen "Developers" und "VirginiaEmployees" ist. In diesem Fall würde die folgende Abfrage: 

george washington 

wie folgt modifiziert: 

(george washington) AND allowACLs:(johndoe OR Developers OR VirginiaEmployees) 

Als Ergebnis der oben stehenden Abfrage werden nur Dokumente angezeigt, für welche entweder der Benutzername "johndoe" oder eine seiner Gruppen im Feld "allowACLs" enthalten ist.

 

Vorteile:

  • Einfach zu implementieren: Der Sicherheitsfilter besteht aus einer einfachen booleschen Abfrage der ACL-Felder
    • Suchmaschinen können boolesche Abfragen sehr gut ausführen
  • Akkurate Zählung: Da die Abfrage selbst modifiziert wird, kann die Suchmaschine automatisch die korrekte Zahl der folgenden Elemente berechnen:
    • Gesamtzahl der Dokumente – nur Dokumente, auf die der Benutzer Lesezugriff hat
    • Anzahl der Facetten (Anmerkung: "Facetten" sind in der Suche dasselbe wie "Navigatoren")
  • Hohe Leistung: Korrekt implementiert hat Early Binding nur minimale Auswirkungen auf die Leistung

Nachteile:

  • Erfordert Indexieren der ACL: Es kann einen großen Aufwand darstellen, die Access Control List aus der ursprünglichen Contentquelle zu extrahieren (im korrekten Format) und in die Suchmaschine zu schreiben
  • Sehr große Abfragen: Einige Suchmaschinen mögen es nicht, Abfragen mit Hunderten oder Tausenden von Begriffen auszuführen (d.h. eine lange Liste aller Gruppen, in denen der Benutzer Mitglied ist)
  • Änderungen an der ACL erfordern neues Indexieren: Nach jeder Änderung an einer ACL muss das Dokument neu Indexiert werden, ehe die Änderungen in den Suchergebnissen reflektiert werden

 

Option 2: Ergebnisse filtern (Late Binding)

Bei dieser Option wird jedes Ergebnis einzeln überprüft, während es von der Suchmaschine ausgegeben wird. Dies nennt man "Late Binding", "Nachbeschneidung" oder "Überprüfung in letzter Minute".

 

 

Es gibt alternative Ansätze, um die als Ergebnis ausgegebenen Dokumente zu filtern:

  • Die ACL des Dokuments aus der ursprünglichen Contentquelle abrufen
    • Diese gegen den Benutzernamen und die Gruppenmitgliedschaft prüfen
  • An der ursprünglichen Contentquelle nachfragen: "Darf dieser Benutzer auf dieses Dokument zugreifen?"
    • Dies kann in HTTP durch ein HEAD-Request oder ein GET-Request für 0 Bytes implementiert werden

Vorteile:

  • ACL muss nicht indexiert werden: In vielen Fällen ist es einfacher, die Contentquelle zu fragen: "Hat der Benutzer die Berechtigung für dieses Dokument?"
  • Änderungen an der ACL werden direkt in Suchergebnissen reflektiert: ACLs werden nicht indexiert, daher müssen die Dokumente auch nicht neu indexiert werden, wenn sich die ACLs ändern
  • Kann jedes komplexe Sicherheitsmodell nutzen: Da der Zugriff je nach Dokument geprüft wird, kann Late Binding so programmiert werden, dass jegliche komplexe Sicherheitsmodelle unterstützt werden

Nachteile:

  • Sehr langsam: Dokumente aus den Suchergebnissen müssen individuell überprüft werden
    • Dadurch müssen vielleicht Hunderte oder Millionen von Dokumenten überprüft werden 
    • Da alle Überprüfungen an der ursprünglichen Contentquelle vorgenommen werden bedeutet dies sehr langsame Verarbeitung
  • Ungenaue Zählung: Um die Leistung zu steigern werden die Gesamtzahlen der Dokumente und Facetten oft als Schätzungen angegeben
    • Systeme mit Late Binding prüfen normalerweise nur die Menge Dokumente, die benötigt wird, um eine Ergebnisseite zu füllen
    • Das bedeutet, dass die Gesamtzahl der Dokumente (Tausende oder Millionen) und Facetten meist nur Schätzungen sind, basierend auf statistischen Verteilungen, nicht komplett akkurat
  • Probleme mit der Paginierung: Da die Gesamtzahl der Dokumente eine Schätzung ist, ist auch die Gesamtzahl der Ergebnisseiten geschätzt
    • Dies kann zu Problemen mit der Paginierung führen (inkorrekte Seitenangaben, Seitenangaben, die sich beim Umschalten zur nächsten Seite ändern, Seite X nicht erreichbar usw.)
  • Instabilität: Die Algorithmen hängen davon ab, dass alle Contentquellen erreichbar sind
    • Wenn ein Server für eine Contentquelle nicht erreichbar ist, können keine Suchergebnisse von dieser Quelle ausgegeben werden
    • Bei vielen Contentquellen wird dadurch die Stabilität des gesamten Systems gefährdet
  • Belastung der Infrastruktur: Da jede Suchabfrage Kommunikation mit der ursprünglichen Contentquelle erfordert, muss diese Contentquelle genug Kapazität haben, alle Anfragen zu beantworten
    • In der Praxis bedeutet das, dass alle Server für Contentquellen ausreichend Kapazitäten freihalten müssen, um die zusätzliche Belastung zu übernehmen
    • Solche systemübergreifende Ressourcenabhängigkeiten machen es schwer, das System bei steigenden Benutzerzahlen entsprechend zu skalieren

 

Option 3: Beides

Manche Suchmaschine bieten sowohl Early Binding (oder "Vorbeschneidung") als auch Late Binding (oder "Überprüfung in letzter Minute").

 

Early Binding gegen Late Binding – Analyse

In Suchmaschinen-Fachkreisen werden die Vor- und Nachteile von Early Binding und Late Binding schon seit langem diskutiert, ohne dass man wirklich zu einem Ergebnis kommt. Unserer Meinung nach ist nur Early Binding in der Lage, eine skalierbare Architektur zu bieten.

 

Die Argumente für Early Binding sind überzeugend:

  • Hohe Leistung: Dokumente werden so früh wie möglich im Prozess ausgefiltert.
  • Suchen haben wenig oder gar keine Auswirkungen auf die Infrastruktur: Early Binding erfordert keine zusätzliche Serverkapazität bei den Contentquellen
  • Keine Kompromisse: Zahlen der Dokumente, Seitennummerierung und Zahlen der Facetten sind exakt

Es gibt eigentlich nur zwei Argumente gegen Early Binding:

 

1. Änderungen an ACL erfordern erneutes Indexieren: 

Hier ist das Problem, dass bestimmte Personen auch nach Änderung der ACL (Entfernen von Zugriffsrechten) noch Zugriff auf das Dokument haben, bis dieses erneut indexiert wird. Die Situation ist natürlich problematisch, wird allerdings durch die folgenden Faktoren abgeschwächt:

  • Bei Aufruf des Dokuments erfolgt in der Regel noch eine Sicherheitsüberprüfung
    • Das Dokument wird ja durch die ursprüngliche Contentquelle bereitgestellt, welche noch ihre eigene Überprüfung der Zugriffsberechtigungen des Benutzers vornimmt, wenn dieser das Dokument abrufen will
  • Systeme mit Late Binding nutzen ACL-Caches, um die Leistung zu steigern
    • Wenn ein ACL-Cache verwendet wird, wird die Suche schneller, es bietet sich aber auch der Nachteil, dass Änderungen an einer ACL erst in den Suchergebnissen reflektiert werden, wenn der Cache aufgefrischt wird
    • Damit stellt sich exakt dasselbe Latenzproblem wie bei Early Binding
  • Indexieren ist auf modernen Systemen viel schneller als früher
    • Bei wichtigen Dokumentensammlungen kann das Update des Index optimiert werden, sodass diese Dokumente bei Bedarf schnell neu indexiert werden
  • Einige moderne Systeme können schnelle ACL-Updates am Index vornehmen
    • In einigen neuen Systemen können die ACL-Updates vorgenommen werden, ohne dass das gesamte Dokument neu indexiert werden muss

 

2. Es ist schwer, die ACL von der Contentquelle zu erhalten

Hier "bekommt man, wofür man zahlt". 

Es stimmt zwar, dass der Entwickleraufwand bei der Erstellung der Software höher ist, wenn ACLs von den Contentquellen abgerufen werden sollen, aber die Vorteile bei Leistung und Ergebnisqualität machen diesen zusätzlichen Aufwand mehr als wett. 

Wir bei Search Technologies lösen dieses Problem, indem wir immer mehr fortgeschrittene Frameworks für die Entwicklung von Konnektoren entwickeln. Damit können wir diese Probleme in einer einheitlichen und verlässlichen Art lösen. 

Uns ist einfach klar, dass Early Binding die einzige skalierbare und zuverlässige Option für große Systeme der Unternehmenssuche mit Document-Level-Security darstellt. Daher ist es die einzige Option, die wir empfehlen, und die einzige, die wir bei unseren Kunden implementieren.

 

Im nächsten Artikel beschreiben wir eine empfohlene Referenz-Architektur für Document-Level-Security in Systemen der Unternehmenssuche.

 

<< Vorangehender Artikel                                                                                                    Referenz-Architektur >>

0