Использование LDAP (AD) для аутентификации MySQL - PullRequest
21 голосов
/ 25 августа 2009

Я пытаюсь придумать план, позволяющий пользователям выполнять аутентификацию с базой данных MySQL (многие на самом деле), используя LDAP. Точнее, ActiveDirectory. Доступ к базе данных, скорее всего, будет осуществляться через приложения, а не через Интернет. Какие у меня варианты?

EDIT:

Хорошо . Кажется, что не существует «официального» способа разрешить аутентификацию на MySQL с использованием LDAP. Какие еще варианты существуют? Можем ли мы синхронизировать пользователей и пароли LDAP с пользовательской таблицей MySQL?

Ответы [ 9 ]

9 голосов
/ 25 августа 2009

это возможно с прокси MySQL. Есть несколько вещей, которые нужно знать, чтобы сделать эту работу:

  • MySQL прокси может выполнять команды оболочки
  • MySQL прокси может перехватывать и переписывать аутентификацию

эти две страницы помогут вам начать:

8 голосов
/ 14 октября 2012

Вы можете использовать плагин auth_ldap, предоставленный Infoscope Hellas L.P. под лицензией GPL.

Его можно скачать с sourceforge по адресу: http://sourceforge.net/projects/mysqlauthldap/

Домашняя страница: http://infoscope.gr/mysqlauthldap

Плагин все еще является бета-версией и работает только для установок UNIX.

6 голосов
/ 21 ноября 2010

Пожалуйста, посмотрите на https://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-7.html

Это в версии релиза 5.5.7

4 голосов
/ 03 января 2012

Теперь это возможно с коммерческими расширениями, например, с внешней аутентификацией MySQL для Windows :

Это позволяет настроить MySQL для использования собственных служб Windows для проверки подлинности клиентских подключений. Пользователи, которые вошли в Windows, могут подключаться из клиентских программ MySQL к серверу на основе информации токена в своей среде без указания дополнительного пароля.

1 голос
/ 04 сентября 2017

Теперь к концу 2017 года я могу предложить это:

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

Percona PAM Authentication Plugin - это бесплатная и открытая реализация плагина аутентификации MySQL. Этот плагин действует как посредник между сервером MySQL, клиентом MySQL и стеком PAM. Плагин сервера запрашивает аутентификацию из стека PAM, пересылает любые запросы и сообщения из стека PAM по сети клиенту (в открытом тексте) и считывает все ответы для стека PAM.

Это НЕ проверено, я пока не знаю, насколько оно хорошо.

1 голос
/ 25 августа 2009

Похоже, вы не везет : (

Не могли бы вы использовать PostgreSQL ?

Этот метод аутентификации работает аналогично паролю, за исключением того, что он использует LDAP в качестве метода аутентификации. LDAP используется только для проверки пар имя пользователя / пароль. Поэтому пользователь должен уже существовать в базе данных, прежде чем LDAP можно будет использовать для аутентификации. Сервер и используемые параметры указываются после ключевого слова ldap в файле pg_hba.conf. Формат этого параметра:

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

0 голосов
/ 01 февраля 2019

Прошло уже десять лет с тех пор, как в оригинальном сообщении наконец-то был дан ответ на официальный метод подключения LDAP для MySQL. Однако для этого требуется, чтобы вы работали с версиями MySQL Enterprise Edition или MySQL Cluster CGE.

Аутентификация MySQL Enterprise

Доступно только в некоторых коммерческих версиях

MySQL Enterprise Edition предоставляет готовую к использованию внешнюю аутентификацию модули для легкой интеграции существующих инфраструктур безопасности, включая подключаемые модули аутентификации Linux (PAM) и Windows Active Directory. Путем аутентификации пользователей MySQL из централизованного справочники, организации могут реализовать единый вход. Тот же пользователь имена, пароли и разрешения могут быть использованы. Это делает MySQL DBA более продуктивным, устраняя необходимость управлять учетными данными в отдельные системы. Это также делает ИТ-инфраструктуры более безопасными благодаря использование существующих правил и процессов безопасности (например, определение слабые пароли и управление сроком действия пароля).

Пользователи MySQL могут проходить проверку подлинности с использованием PAM или встроенной ОС Windows. услуги.

  • Внешняя аутентификация MySQL для PAM - Позволяет настроить MySQL для использования Linux PAM (Pluggable Authentication Модули) для аутентификации пользователей через PAM для различной аутентификации методы, такие как пароли Linux или каталог LDAP.
  • Внешняя аутентификация MySQL для Windows - Позволяет настроить MySQL для использования собственных служб Windows для аутентификации клиентские подключения. Пользователи, которые вошли в Windows, могут подключиться от клиентских программ MySQL к серверу на основе токена информация в их среде без указания дополнительного пароль.
  • Новое! Внешняя аутентификация MySQL для LDAP - позволяет настроить MySQL для аутентификации пользователей через LDAP (облегченный каталог Протокол доступа) серверов. Можно указать пользователей или группы пользователей
    подробно через спецификации LDAP. Имя пользователя / пароль и SASL
    поддерживается аутентификация.
0 голосов
/ 13 февраля 2018

Это определенно возможно. Смотрите здесь: https://www.percona.com/blog/2017/04/21/how-to-setup-and-troubleshoot-percona-pam-with-ldap-for-external-authentication/

В моей среде я не настраивал Samba или NSS / SSS и не присоединяюсь к домену Windows. Я просто рассматриваю сервер AD как конечную точку LDAP. Итак, я начал с шага 9 в вышеуказанных направлениях.

РЕДАКТИРОВАТЬ: Добавить инструкции по ссылке выше, как предложено AfroThundr

Установите плагин 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)

Настройте Percona PAM для аутентификации в LDAP, создав /etc/pam.d/mysqld со следующим содержимым:

auth required pam_ldap.so
account required pam_ldap.so

Создайте пользователя MySQL, который будет проходить аутентификацию через 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)

Войдите как пользователь и проверьте гранты:

[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'@'%' |
+---------------------------------------------------

Также остерегайтесь AppArmor - он заблокирует попытку аутентификации. Вы можете увидеть вводящие в заблуждение сообщения об ошибках в /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

Вам необходимо добавить следующее к /etc/apparmor.d/local/usr.sbin.mysqld:

#include <abstractions/authentication>

и перезагрузите apparmor:

service apparmor restart

(Спасибо https://bugs.launchpad.net/ubuntu/+source/squid/+bug/1608984 за то, что привели меня к части AppArmor)

0 голосов
/ 25 августа 2009

Лично я не могу найти информацию, которая предполагает, что это возможно. Я вижу только использование MySQL в качестве хранилища данных для каталога LDAP.

...