Использовать LDAP для аутентификации MySQL?

15

Мы запускаем несколько десятков различных серверов MySQL для наших пользователей. Они используют бесплатную / открытую версию MySQL, а не коммерческую версию. Управление паролями учетной записи на этих серверах является болезненным.

Существуют ли плагины, которые позволили бы нам использовать LDAP для управления привилегиями MySQL? По крайней мере, мы хотели бы получить некоторые имена пользователей и пароли от серверов LDAP.

Мы используем MySQL 5.1 и 5.5. Возможно, мы захотим перейти на MySQL 5.6, если это необходимо для достижения этой функциональности.

Мы бы предпочли, чтобы любые инструменты основывались на CLI и не требовали GUI или веб-интерфейса.

Стефан Ласевский
источник

Ответы:

14

Корпоративный MySQL (версия, за которую вы платите Oracle за лицензию) имеет модуль PAM, который позволяет выполнять аутентификацию LDAP: https://dev.mysql.com/doc/refman/5.5/en/pam-pluggable-authentication.html.

MariaDB (двоичная совместимая версия MySQL, разработанная Monty) имеет модуль PAM с открытым исходным кодом, доступный для него: http://kb.askmonty.org/en/pam-authentication-plugin/

У меня нет опыта работы с ними - я представляю их только как функции, о которых я слышал, но не проверял и не использовал сам.

drogart
источник
5

MySQL имеет подключаемый модуль аутентификации PAM , который позволит вам использовать любой доступный модуль PAM для предоставления услуг аутентификации. Существует pam_ldapдовольно простой в настройке модуль, который позволит вам делать то, что вы хотите.

Документация плагина включает в себя пример использования LDAP .

larsks
источник
Знаете ли вы, будет ли это поддерживать аутентификацию на основе Kerberos?
Сакиб Али
Я понятия не имею. Я считаю, что плагин GSSAPI существует по крайней мере для mariadb, но у меня нет личного опыта с этим.
Жаворонки
2

Вы можете перенести свои установки на Percona Server и использовать один из следующих двух способов подключения MySQL к LDAP через PAM:

  • Полный плагин PAM называется auth_pam. Этот плагин использует dialog.so. Он полностью поддерживает протокол PAM с произвольной связью между клиентом и сервером.

  • Oracle-совместимый PAM называется auth_pam_compat. Этот плагин использует mysql_clear_password, который является частью клиента Oracle MySQL. Он также имеет некоторые ограничения, например, он поддерживает только один ввод пароля. Вы должны использовать опцию «-p», чтобы передать пароль auth_pam_compat.

http://www.percona.com/doc/percona-pam-for-mysql/intro.html

Мы используем, auth_pam_compatно вы должны помнить, что клиент должен поддерживать Cleartext клиентский плагин аутентификации

klocek
источник
1

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

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

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

Это НЕ проверено, и я никогда не работал с этим, я хотел предложить это, поскольку это может быть хорошо.

Мухаммед Нурельдин
источник
"в открытом тексте" - пожалуйста, не используйте это.
h0tw1r3
@ h0tw1r3, почему? ِ На самом деле я считаю, что это не подходит для использования, но мне интересно услышать ваше мнение. Есть ли альтернатива с открытым исходным кодом для коммерческого плагина PAM?
Мохаммед Нурельдин