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.