(Entschuldigung, wenn ich die falsche Frage stelle oder am falschen Ort.)
Wir betreiben IT für unseren Verein (alle Freiwilligen). Wir haben einen Server mit Mitgliedsdatenbank in OpenLDAP, Mailserver, FTP und eine Reihe von hausgemachten Webanwendungen.
Das meiste davon ist in Ordnung, mit Ausnahme der OpenLDAP-Mitgliedsdatenbank. Die Leute, die es eingerichtet haben, sind schon lange weg und die aktuelle IT-Gruppe ist nicht wirklich in der Lage, Änderungen vorzunehmen.
Also habe ich darüber nachgedacht, die Mitgliedsdatenbank von OpenLDAP in eine MySQL-Datenbank zu verschieben. Dies scheint möglich, unser E-Mail- und FTP-Server unterstützt SQL-Quellen und wir können unsere Webanwendungen entsprechend ändern. Aber ich kann mich immer noch nicht entscheiden, ob dies einen Nachteil hat. Daher meine Fragen:
- Was sind die Vorteile eines LDAP gegenüber einer SQL-Datenbank? (Für einfache Benutzerdatenbank)
- Gibt es Gründe, MySQL nicht als Benutzerdatenbank zu verwenden?
Ich konnte hier keine vergleichbare Frage finden. Und Informationen, die ich extern finde, führen mich zu Seiten, die älter als 10 Jahre sind.
Antworten:
Dies ist ein weit gefasstes Thema ohne einfache Antwort, da es von vielen Faktoren abhängt.
Einige Vorteile von (Open) LDAP als Benutzerdatenbank:
Leider ist die eigentliche Verwaltung von LDAP im Vergleich zu einer einfachen SQL-Datenbank viel aufwändiger. Wenn alle Ihre Systeme vollständig mit derselben SQL-Benutzerdatenbank arbeiten können, gibt es keinen wirklichen Grund, warum Sie stattdessen LDAP benötigen . Andererseits würde ich sehr lange und gründlich darüber nachdenken, ob es nicht einfacher ist, sich hinzusetzen und LDAP zu verstehen, bevor man es herausreißt und durch etwas anderes ersetzt. Diese Art von Änderungen sieht zu Beginn in der Regel einfach aus, aber auf dem Weg dorthin treten immer wieder Probleme auf, die Sie nicht berücksichtigt haben und die die Dinge viel schwieriger machen als erwartet.
quelle
Können Sie eine MySQL-Datenbank als gemeinsame Quelle für Benutzerkonten verwenden? Ja auf jeden Fall. Ich habe ein solches System montiert und es funktioniert ziemlich gut mit mehreren Anwendungen.
Was sind die Nachteile der Verwendung einer MySQL-Datenbank anstelle von LDAP?
a) Sie müssen alle Anwendungen anpassen, um Ihre Datenbank zu verwenden.
Es ist normalerweise nicht viel Arbeit, eine Anwendung anzupassen . Oft können Sie es einfach lösen, indem Sie eine Ansicht erstellen, die die Spaltennamen anpasst. Manchmal müssen Sie möglicherweise ein bisschen Code hinzufügen, um ein anderes Kennwort-Hashing-Format zu berücksichtigen, oder um ein Authentifizierungs-Plugin zu erstellen.
Sie müssen dies jedoch für jede einzelne Anwendung tun . Und wenn Sie morgen aufgefordert werden, eine neue Webanwendung zu installieren (z. B. wenn jemand beschließt, ein Wordpress-Blog hinzuzufügen), müssen Sie die Anwendung erneut studieren und sehen, wie Sie sie anpassen können.
"Jeder" unterstützt die Authentifizierung gegen LDAP. Dies ist der De-facto- Standard, und Sie finden Plugins für die LDAP-Authentifizierung in jeder Anwendung mit einer angemessenen Größe (und für diejenigen, die dies nicht tun, gibt es einen klaren Grund, dies zu implementieren). Es gibt einige (sehr wenige) Alternativen, und sie werden nur wenig für die Authentifizierung verwendet.
Beachten Sie außerdem, dass es möglicherweise schwieriger ist, eine Benutzertabelle aus einer anderen Engine (MySQL) zusätzlich zu unterstützen, wenn eine Anwendung zufällig ein anderes Datenbankmodul verwendet (vorausgesetzt, es gibt eine neue Entwicklung, die die Verwendung von PostgreSQL erfordert).
Natürlich können Sie die Anpassung selbst nur tun, wenn es sich um Ihre eigene Entwicklung oder Open Source handelt. Vergessen Sie, Microsoft Windows dazu zu bringen, ein solches benutzerdefiniertes Schema zu unterstützen!
b) Sicherheitszentralisierung
Die Verwendung eines zentralen Authentifizierungsservers bietet mehrere Vorteile:
Wenn Sie einen zentralen Server haben und jemand versucht, das Kennwort für den Benutzer zu erzwingen
john
, besteht eine übliche Einrichtung darin, den Benutzer für einige Zeit (oder bis zur manuellen Freigabe) zu blockieren. Wenn Sie ein Dutzend Dienste haben, selbst wenn alle einige Drosselungsmaßnahmen hätten (Hinweis: wahrscheinlich nicht), würde jeder von ihnen getrennt, und durch den Angriff auf mehrere Dienste hätte ein Angreifer tatsächlich N Versuche mal die Anzahl der Dienste . Sie müssten diese Metadaten in der gemeinsam genutzten Datenbank und allen Diensten koordinieren, um sie zu überprüfen und auf dieselbe Weise zu implementieren (mehr Code zum Hinzufügen zu den Anwendungen, Mail- und FTP-Servern ...).Zweitens zentrale Protokollierung. Wenn Sie die Authentifizierung für einen einzelnen Dienst durchführen, können Sie ein einzelnes Authentifizierungsprotokoll erstellen, anstatt es auf mehrere Stellen aufzuteilen.
Drittens ist es ein einzelner Punkt für Updates. Sie möchten sich von MD5-Hashes entfernen, um pdkdf2 oder Argon2 zu verwenden? Sie müssen nur den Authentifizierungsserver aktualisieren, um ihn zu unterstützen. Andernfalls müssten Sie jeden einzelnen Dienst erhalten , um dieses neue Format zu unterstützen.
Viertens größere Isolation. Wenn die gesamte Authentifizierung über den zentralen Server erfolgt, sollte diese so konfiguriert werden, dass nur er die vertraulichen Daten lesen kann, und Sie können sich darauf konzentrieren, dass sie sicher sind. Wenn jedoch jeder Dienst die Benutzerkennwörter überprüfen muss, haben Sie eine viel größere Oberfläche: Eine SQL-Injection-Sicherheitsanfälligkeit auf einem dieser Dienste würde es ermöglichen, die Liste der Benutzer und Hashes zu sichern (und ich gehe bereits davon aus, dass sie schreibgeschützt ist). Andernfalls können sie sie möglicherweise sogar ändern oder gefälschte Benutzer einfügen.
Bitte beachten Sie, dass Sie (b) lösen können, indem Sie einen zentralen Server haben, der überhaupt kein LDAP verwendet. Angesichts von (a) ist es jedoch sinnvoll, das LDAP-Protokoll weiterhin zur Authentifizierung zu verwenden.
Es gibt keinen Grund, warum ein LDAP-Server, der hauptsächlich zur Authentifizierung verwendet wird, keine MySQL-Datenbank zum Speichern verwenden kann. Tatsächlich ist LDAP viel leistungsfähiger als die typische Verwendung (weshalb es so entmutigend aussieht). Mir ist jedoch keine Implementierung bekannt, die dies tut.
Ich empfehle, Ihren aktuellen LDAP-Server beizubehalten und bei Bedarf eine Schnittstelle zu erstellen, auf der die häufigsten Aktionen ausgeführt werden können (es gibt mehrere LDAP-Frontends, von denen eines möglicherweise die Anforderungen Ihrer IT-Gruppe abdeckt?).
Wenn Sie Ihren Anmeldevorgang für benutzerdefinierte Webanwendungen ändern möchten, würde ich sie dazu bringen, eine Single Sign-On-Lösung wie SAML zu unterstützen, aber ich würde trotzdem das LDAP-Backend verwenden lassen, das mit Ihrem FTP, Ihrer E-Mail-Adresse und Ihrer E-Mail-Adresse geteilt wird Sonstige Dienstleistungen.
quelle
Ich wollte nur etwas hinzufügen, auf das in den anderen Antworten (noch) nicht hingewiesen wurde: Beim Vergleich von LDAP und SQL werden Äpfel und Orangen verglichen, da sie sich auf verschiedenen Ebenen im Stapel befinden.
Sie können LDAP mithilfe von SQL-Datenbanken implementieren. Denken Sie jedoch daran, dass diese verschiedene Funktionen unterstützen. (Tatsächlich verwenden die meisten LDAP-Lösungen wahrscheinlich hinter den Kulissen SQL oder eine andere Datenbank.)
LDAP ist ein Industriestandard für Verzeichnisdienste. Es ist möglich, dass viele Ihrer Downstream-Dienste für die Authentifizierung, Autorisierung usw. auf den LDAP-Dienst angewiesen sind. In diesem Fall müssten Sie weiterhin eine LDAP-kompatible Schicht auf Ihrer neuen SQL-Datenbank erstellen.
Gleichzeitig ist es möglich, dass Ihre anderen Anwendungen diese LDAP-Kompatibilität nicht benötigen und die Migration auf Ihre eigene SQL-Benutzerverwaltung möglicherweise einfacher ist. Aber selbst in diesem Fall vermute ich, dass Sie möglicherweise Ihre eigene Benutzerverwaltungslogik in den Anwendungen benötigen (es sei denn, sie unterstützen OAuth oder ähnliches).
Ich würde empfehlen, zunächst Ihre anderen IT-Anwendungen zu überprüfen, um festzustellen, wie eng sie mit dem LDAP-Dienst für Anmelde- und Autorisierungsdienste verbunden sind, und dann zu entscheiden, wie einfach oder schmerzhaft die Migration auf eine benutzerdefinierte SQL-Datenbanklösung wäre.
quelle