Подтвердить что ты не робот

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

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

EDIT:

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

4b9b3361

Ответ 1

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

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

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

Ответ 2

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

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

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

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

Ответ 4

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

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

Ответ 5

Похоже, вы из-за удачи: (

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

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

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

Ответ 6

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

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

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

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

Ответ 7

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

Ответ 8

Это определенно возможно. Смотрите здесь: 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 [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)

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

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

Также остерегайтесь 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)

Ответ 9

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

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

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

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

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

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