it-swarm.com.de

LDAP (AD) für die MySQL-Authentifizierung verwenden

Ich versuche, einen Plan aufzustellen, der es Benutzern ermöglicht, sich mit einer MySQL-Datenbank (viele tatsächlich) mit LDAP zu authentifizieren. Genauer gesagt, ActiveDirectory. Auf die Datenbank wird wahrscheinlich über Anwendungen zugegriffen, nicht über das Web. Welche Möglichkeiten habe ich? 

BEARBEITEN:

Okay . Es scheint, dass es keine "offizielle" Möglichkeit gibt, die Authentifizierung unter LDAP für MySQL zuzulassen. Welche anderen Möglichkeiten gibt es? Können wir LDAP-Benutzer und Kennwörter mit der MySQL-Benutzertabelle synchronisieren?

21
snicker

dies ist mit mysql proxy möglich. Es gibt ein paar Dinge, die Sie wissen müssen, damit dies funktioniert:

  • mySQL-Proxy kann Shell-Befehle ausführen
  • mySQL-Proxy kann die Authentifizierung abfangen und neu schreiben

diese beiden Seiten helfen Ihnen beim Einstieg:

9
longneck

Sie können das auth_ldap-Plugin von Infoscope Hellas L.P. unter GPL verwenden.

Es kann von sourceforge heruntergeladen werden: http://sourceforge.net/projects/mysqlauthldap/

Homepage: http://infoscope.gr/mysqlauthldap

Das Plugin ist noch eine Beta und funktioniert nur für UNIX-Installationen.

8

Bitte schauen Sie unter http://dev.mysql.com/doc/refman/5.5/de/news-5-5-7.html

Dies ist in der Version 5.5.7

6
Dave Stokes

Dies ist jetzt mit kommerziellen Erweiterungen möglich, z. mit Externe MySQL-Authentifizierung für Windows :

Auf diese Weise können Sie MySQL so konfigurieren, dass native Windows-Dienste zur Authentifizierung von Clientverbindungen verwendet werden. Benutzer, die sich bei Windows angemeldet haben, können sich von MySQL-Client-Programmen ausgehend von den Tokeninformationen in ihrer Umgebung mit dem Server verbinden, ohne ein zusätzliches Kennwort anzugeben.

4
alastori

Jetzt kann ich bis Ende 2017 folgendes vorschlagen:

https://www.percona.com/doc/percona-server/LATEST/management/pam_plugin.html

Das Percona PAM Authentication Plugin ist eine kostenlose Open Source-Implementierung des MySQL-Authentifizierungs-Plugins. Dieses Plugin fungiert als Vermittler zwischen dem MySQL-Server, dem MySQL-Client und dem PAM-Stack. Das Server-Plug-In fordert die Authentifizierung vom PAM-Stack an, leitet alle Anforderungen und Nachrichten vom PAM-Stack drahtlos an den Client (im Klartext) weiter und liest alle Antworten für den PAM-Stack zurück.

Es wirdNICHTgetestet, ich weiß noch nicht, wie gut es ist.

1

Sieht aus wie Sie sindPech :(

Könnten Sie PostgreSQL verwenden?

Diese Authentifizierungsmethode funktioniert ähnlich wie das Kennwort, nur dass LDAP als Authentifizierungsmethode verwendet wird. LDAP wird nur verwendet, um die Benutzernamen/Kennwort-Paare zu überprüfen. Daher muss der Benutzer bereits in der Datenbank vorhanden sein, bevor LDAP zur Authentifizierung verwendet werden kann. Der Server und die verwendeten Parameter werden nach dem LDAP-Schlüsselwort Word in der Datei pg_hba.conf angegeben. Das Format dieses Parameters ist:

ldap[s]://servername[:port]/base dn[;prefix[;suffix]]

1
Esteban Küber

Ich persönlich finde keine Informationen, die darauf hindeuten, dass dies möglich ist. Ich sehe nur MySQL als Datenspeicher für das LDAP-Verzeichnis.

0
Robert Rouse

Das ist definitiv möglich. Siehe hier: https://www.percona.com/blog/2017/04/21/wie-zu-setup-and-troubleshoot-percona-pam-mit-ldap-für-external-authentifizierung/

In meiner Umgebung habe ich weder Samba noch NSS/SSS eingerichtet und ich komme nicht zur Windows-Domäne. Ich behandele den AD-Server einfach als LDAP-Endpunkt. Also bin ich von Schritt 9 in die obigen Richtungen gegangen. 

EDIT: Anweisungen von obigem Link hinzufügen, wie von AfroThundr vorgeschlagen

Installieren Sie das Percona PAM-Plugin:

mysql> INSTALL PLUGIN auth_pam SONAME 'auth_pam.so';
Query OK, 0 rows affected (0.01 sec)

mysql> INSTALL PLUGIN auth_pam_compat SONAME 'auth_pam_compat.so';
Query OK, 0 rows affected (0.00 sec)

Konfigurieren Sie Percona PAM für die Authentifizierung bei LDAP, indem Sie /etc/pam.d/mysqld mit diesem Inhalt erstellen:

auth required pam_ldap.so
account required pam_ldap.so

Erstellen Sie einen MySQL-Benutzer, der sich über auth_pam authentifiziert:

mysql> CREATE USER [email protected]'%' IDENTIFIED WITH auth_pam;
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON testdb.* TO [email protected]'%';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

Melden Sie sich als dieser Benutzer an und prüfen Sie die Berechtigungen:

[[email protected] ~]# mysql -u user
Password: <your LDAP/AD password>
Welcome to the MySQL monitor.  Commands end with ; or g.
Your MySQL connection id is 22
Server version: 5.7.17-13 Percona Server (GPL), Release 13, Revision fd33d43

Copyright (c) 2009-2016 Percona LLC and/or its affiliates
Copyright (c) 2000, 2016, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or 'h' for help. Type 'c' to clear the current input statement.

mysql> SHOW GRANTS;
+-----------------------------------------------------+
| Grants for [email protected]%                                 |
+-----------------------------------------------------+
| GRANT USAGE ON *.* TO 'user'@'%'                  |
| GRANT ALL PRIVILEGES ON `testdb`.* TO 'user'@'%' |
+---------------------------------------------------

Hüten Sie sich auch vor AppArmor - der Autorisierungsversuch wird blockiert. In /var/log/auth.log werden möglicherweise irreführende Fehlermeldungen angezeigt:

Feb 12 13:37:36 mysqld[15164]: PAM _pam_init_handlers: no default config /etc/pam.d/other
Feb 12 13:37:36 mysqld[15164]: PAM error reading PAM configuration file
Feb 12 13:37:36 mysqld[15164]: PAM pam_start: failed to initialize handlers

Sie müssen Folgendes zu /etc/apparmor.d/local/usr.sbin.mysqld hinzufügen:

#include <abstractions/authentication>

und laden Sie den Apparmor neu:

service apparmor restart

(Dank an https://bugs.launchpad.net/ubuntu/+source/squid/+bug/1608984 für den Aufruf zum AppArmor-Teil)

0
z0lo

Nun, es ist ein Jahrzehnt her, seit der ursprüngliche Beitrag die Antwort ist, dass es eine offizielle LDAP-Verbindungsmethode für MySQL gibt. Sie müssen jedoch die MySQL Enterprise Edition- oder MySQL Cluster CGE-Versionen ausführen.

MySQL Enterprise-Authentifizierung

Nur in ausgewählten kommerziellen Editionen verfügbar

MySQL Enterprise Edition bietet einsatzbereite externe Authentifizierungsmodule für die einfache Integration vorhandener Sicherheitsinfrastrukturen, Einschließlich Linux Pluggable Authentication Modules (PAM) und Windows Active Directory. Durch die Authentifizierung von MySQL-Benutzern aus zentralisierten Verzeichnissen können Organisationen Single Sign On implementieren. Die gleichen Benutzernamen, Kennwörter und Berechtigungen können verwendet werden. Dies macht MySQL DBAs Produktiver, da keine Anmeldeinformationen in Einzelsystemen verwaltet werden müssen. IT-Infrastrukturen werden außerdem sicherer, indem Vorhandene Sicherheitsregeln und -prozesse genutzt werden (z. B. das Identifizieren von Schwachen Passwörtern und das Verwalten des Kennworts).

MySQL-Benutzer können mit PAM oder nativen Windows-Betriebssystemdiensten (.____.) Authentifiziert werden.

  • Externe MySQL-Authentifizierung für PAM - Ermöglicht die Konfiguration von MySQL für die Verwendung von Linux-PAMs (Pluggable-Authentifizierungsmodule ), Um Benutzer über PAMs für verschiedene Authentifizierungsmethoden , Z. B. Linux-Kennwörter, zu authentifizieren oder ein LDAP-Verzeichnis. 
  • Externe MySQL-Authentifizierung für Windows - Mit dieser Option können Sie MySQL so konfigurieren, dass native Windows-Dienste zur Authentifizierung von Client-Verbindungen verwendet werden. Benutzer, die sich bei Windows angemeldet haben, können Von MySQL-Client-Programmen auf der Grundlage der Token-Informationen In ihrer Umgebung mit dem Server verbinden, ohne ein zusätzliches - Kennwort anzugeben.
  • Neu! Externe MySQL-Authentifizierung für LDAP - Ermöglicht die Konfiguration von MySQL zur Authentifizierung von Benutzern über LDAP-Server (Lightweight Directory Access Protocol). Benutzer oder Benutzergruppen können angegeben werden
    detailliert über LDAP-Spezifikationen. Benutzername/Passwort und SASL
    Authentifizierung wird unterstützt.
0
brentil