Мы запускаем пару десятков различных серверов MySQL для наших пользователей. Они используют бесплатную версию MySQL с открытым исходным кодом, а не коммерческую версию. Управление паролями учетных записей на этих серверах болезненно.
Существуют ли какие-либо плагины, которые позволят нам использовать LDAP для управления привилегиями MySQL? По крайней мере, мы хотели бы получить некоторые имена пользователей и пароли от серверов LDAP.
Мы используем MySQL 5.1 и 5.5. Возможно, мы захотим перейти на MySQL 5.6, если это потребуется для достижения этой функциональности.
Мы бы предпочли, чтобы любые инструменты были основаны на интерфейсе командной строки и не требовали графического или веб-интерфейса.
Enterprise MySQL (версия, за лицензию которой вы платите Oracle) имеет модуль PAM, который позволяет выполнять аутентификацию LDAP: https://dev.mysql.com/doc/refman/5.5/en/pam-pluggable-authentication.html
MariaDB (бинарно-совместимая версия MySQL, разработанная Монти) имеет модуль PAM с открытым исходным кодом: http://kb.askmonty.org/en/pam-authentication-plugin/
У меня нет практического опыта работы с ними - я представляю их только как функции, о которых я слышал, но не тестировал и не использовал сам.
Вы можете использовать auth_ldap
плагин, предоставленный Infoscope Hellas L.P. по лицензии GPL.
Его можно скачать с sourceforge здесь.
Плагин все еще находится в стадии бета-тестирования и работает только для установок UNIX.
Прокси-сервер Mysql может включить это для вас с помощью ролей. Более подробную информацию можно найти здесь: https://stackoverflow.com/questions/1329963/using-ldap-ad-for-mysql-authenication и тут: http://jan.kneschke.de/2009/6/25/mysql-proxy-roles/
MySQL имеет Плагин аутентификации PAM это позволит вам использовать любой доступный модуль PAM для предоставления услуг аутентификации. Eсть pam_ldap
модуль, который относительно легко настроить, и он должен позволить вам делать то, что вы хотите.
Документация плагина включает пример использования LDAP.
Я опубликовал в своем блоге полный пример (с исходным кодом) плагина LDAP Authentication для MySQL.
http://nafiux.com/blog/2012/08/11/mysql-ldap-authentication-plugin/
Вы можете перенести свои установки на 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
но вы должны помнить, что клиент должен поддерживать Плагин аутентификации на стороне клиента с открытым текстом
После некоторого исследования я могу предложить следующее:
https://www.percona.com/doc/percona-server/LATEST/management/pam_plugin.html
Плагин аутентификации Percona PAM - это бесплатная реализация плагина аутентификации MySQL с открытым исходным кодом. Этот плагин действует как посредник между сервером MySQL, клиентом MySQL и стеком PAM. Плагин сервера запрашивает аутентификацию из стека PAM, пересылает любые запросы и сообщения из стека PAM по сети клиенту (в открытом виде) и считывает все ответы для стека PAM.
Он НЕ тестировался, и я никогда не работал с ним, я хотел предложить его, так как он может быть хорошим.