web-dev-qa-db-fra.com

Utilisation de LDAP (AD) pour l'authentification MySQL

J'essaie de mettre au point un plan permettant aux utilisateurs de s'authentifier avec une base de données MySQL (beaucoup, en fait) à l'aide de LDAP. Plus spécifiquement, ActiveDirectory. La base de données sera probablement accessible via des applications et non sur le Web. Quelles sont mes options? 

MODIFIER:

D'accord . Il semble qu’il n’existe aucun moyen "officiel" d’autoriser l’authentification sur MySQL avec LDAP. Quelles autres options existent? Pouvons-nous synchroniser les utilisateurs et les mots de passe LDAP avec la table des utilisateurs MySQL?

21
snicker

c'est possible avec le proxy mysql. Il y a quelques choses que vous devez savoir pour que cela fonctionne:

  • le proxy mysql peut exécuter des commandes shell
  • le proxy mysql peut intercepter et réécrire l'authentification

ces deux pages vous aideront à démarrer:

9
longneck

Vous pouvez utiliser le plugin auth_ldap fourni par Infoscope Hellas L.P. sous GPL.

Il peut être téléchargé à partir de sourceforge à l’adresse suivante: http://sourceforge.net/projects/mysqlauthldap/

Page d'accueil: http://infoscope.gr/mysqlauthldap

Le plug-in est toujours une version bêta et ne fonctionne que pour les installations UNIX.

8

Veuillez consulter http://dev.mysql.com/doc/refman/5.5/en/news-5-5-7.html

Ceci est dans la version candidate 5.5.7

6
Dave Stokes

Cela est maintenant possible avec des extensions commerciales, par exemple. avec Authentification externe MySQL pour Windows :

Cela vous permet de configurer MySQL pour utiliser les services Windows natifs afin d'authentifier les connexions client. Les utilisateurs connectés à Windows peuvent se connecter à partir du client MySQL au serveur en fonction des informations de jeton de leur environnement sans spécifier de mot de passe supplémentaire.

4
alastori

D'ici fin 2017, je peux suggérer ceci:

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

Le plugin d’authentification PAM de Percona est une implémentation libre et gratuite du plugin d’authentification de MySQL. Ce plugin joue le rôle de médiateur entre le serveur MySQL, le client MySQL et la pile PAM. Le plug-in du serveur demande l'authentification à la pile PAM, transfère toutes les demandes et tous les messages de la pile PAM au client (en texte clair) et lit toutes les réponses à la pile PAM.

C'estPAStesté, je ne sais pas encore à quel point il est bon.

1
Mohammed Noureldin

On dirait que vous êtespas de chance :(

Pourriez-vous utiliser PostgreSQL ?

Cette méthode d'authentification fonctionne de manière similaire au mot de passe, sauf qu'elle utilise LDAP comme méthode d'authentification. LDAP est utilisé uniquement pour valider les paires nom d'utilisateur/mot de passe. Par conséquent, l'utilisateur doit déjà exister dans la base de données avant que LDAP puisse être utilisé pour l'authentification. Le serveur et les paramètres utilisés sont spécifiés après la clé LDAP Word dans le fichier pg_hba.conf. Le format de ce paramètre est:

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

1
Esteban Küber

Personnellement, je ne trouve aucune information suggérant que cela est possible. Tout ce que je vois, c'est utiliser MySQL comme magasin de données pour l'annuaire LDAP.

0
Robert Rouse

C'est certainement possible. Voir ici: https://www.percona.com/blog/2017/04/21/how-to-setup-and-troubleshoot-percona-pam-with-ldap-for-external-authentication/

Dans mon environnement, je n’ai pas configuré Samba ni NSS/SSS et je n’ai pas rejoint le domaine Windows. Je traite simplement le serveur AD comme un point de terminaison LDAP. J'ai donc commencé à l'étape 9 dans les directions ci-dessus. 

EDIT: Ajouter les instructions du lien ci-dessus comme suggéré par AfroThundr

Installez le plugin Percona PAM:

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)

Configurez Percona PAM pour s’authentifier auprès de LDAP en créant /etc/pam.d/mysqld avec ce contenu:

auth required pam_ldap.so
account required pam_ldap.so

Créez un utilisateur MySQL qui s'authentifiera via auth_pam:

mysql> CREATE USER user@'%' IDENTIFIED WITH auth_pam;
Query OK, 0 rows affected (0.00 sec)

mysql> GRANT ALL PRIVILEGES ON testdb.* TO user@'%';
Query OK, 0 rows affected (0.00 sec)

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

Connectez-vous en tant qu'utilisateur et vérifiez les droits accordés:

[root@ps-20 ~]# 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 user@%                                 |
+-----------------------------------------------------+
| GRANT USAGE ON *.* TO 'user'@'%'                  |
| GRANT ALL PRIVILEGES ON `testdb`.* TO 'user'@'%' |
+---------------------------------------------------

Méfiez-vous également d'AppArmor - cela bloquera la tentative d'authentification. Vous pouvez voir des messages d'erreur trompeurs dans /var/log/auth.log:

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

Vous devez ajouter les éléments suivants à /etc/apparmor.d/local/usr.sbin.mysqld:

#include <abstractions/authentication>

et rechargez apparmor:

service apparmor restart

(Merci à https://bugs.launchpad.net/ubuntu/+source/squid/+bug/1608984 pour m'avoir conduit à la partie AppArmor)

0
z0lo

Cela fait maintenant 10 ans que le message original a été répondu, la réponse est finalement oui à l'existence d'une méthode de connexion LDAP officielle pour MySQL. Toutefois, vous devez exécuter les versions de MySQL Enterprise Edition ou de MySQL Cluster CGE.

Authentification MySQL Enterprise

Uniquement disponible dans certaines éditions commerciales

MySQL Enterprise Edition fournit des modules d'authentification externe Prêts à l'emploi pour intégrer facilement les infrastructures de sécurité existantes, , Y compris les modules d'authentification enfichables Linux (PAM) et Windows Active Directory. En authentifiant les utilisateurs MySQL à partir de répertoires centralisés , Les organisations peuvent mettre en œuvre l'authentification unique. Les mêmes noms d'utilisateur, mots de passe et autorisations peuvent être utilisés. Cela rend les administrateurs de bases de données MySQL Plus productifs en éliminant la nécessité de gérer les informations d'identification dans Systèmes individuels. Elle renforce également la sécurité des infrastructures informatiques en En exploitant les règles et processus de sécurité existants (par exemple, en identifiant Des mots de passe faibles et en gérant l’expiration du mot de passe).

Les utilisateurs MySQL peuvent être authentifiés à l'aide de services PAM ou Windows natifs .

  • Authentification externe MySQL pour PAM - Vous permet de configurer MySQL pour qu'il utilise des PAM Linux (modules enfichables d'authentification ) Afin d'authentifier les utilisateurs via PAM pour différentes méthodes d'authentification [.____. ou un annuaire LDAP. 
  • Authentification externe MySQL pour Windows - Vous permet de configurer MySQL pour utiliser les services Windows natifs afin d'authentifier les connexions client . Les utilisateurs qui se sont connectés à Windows peuvent connecter À partir du client MySQL au serveur en fonction des informations de jeton De leur environnement sans spécifier de mot de passe Supplémentaire.
  • Nouveau! Authentification externe MySQL pour LDAP - Vous permet de configurer MySQL pour authentifier les utilisateurs via des serveurs LDAP (Lightweight Directory Access Protocol). Des utilisateurs ou des groupes d'utilisateurs peuvent être spécifiés
    en détail via les spécifications LDAP. Nom d'utilisateur/mot de passe et SASL
    authentification sont pris en charge.
0
brentil