Вопрос по authentication, active-directory, ldap, mysql – Использование LDAP (AD) для аутентификации MySQL

21

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

РЕДАКТИРОВАТЬ:

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

Вы ищете строго решение MySQL или вы можете подойти к этой проблеме со стороны приложения (как в программе, выход из проблемы) I ' Hugoware
Я не буду программировать свой выход, если только я не должен. Я'Я предпочел бы иметь аутентификацию обрабатывается изначально. Я'Думал простоаутентификации» через приложение в LDAP и создание пользователей в БД пользователей MySQL и их связывание ... но для этого требуется, чтобы приложение имело большие полномочия на сервере MySQL. snicker
MySQL прокси (как упомянуто кем-то ниже) будет моим первым выбором James C

Ваш Ответ

9   ответов
0

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

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

service apparmor restart

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

Вместо того, чтобы просто опубликовать эту ссылку, вы можете опубликовать соответствующие части в своем ответе. Это создает более полный ответ и гарантирует, что ваш ответ по-прежнему актуален, если эта ссылка когда-нибудь разорвется. AfroThundr
9

Вот несколько вещей, которые нужно знать, чтобы сделать эту работу:

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

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

Пример запуска команды оболочки:http://forge.mysql.com/tools/tool.php?id=79Пример перехвата и переписывания аутентификации:http://web.archive.org/web/20150329071023/http://jan.kneschke.de/2009/6/25/mysql-proxy-roles/
0

когдаПрошло уже десять лет с тех пор, как в оригинальном сообщении был дан ответ: да, существует официальный метод подключения 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 (Pluggable Authentication Modules) для аутентификации пользователей через PAM для различных методов аутентификации, таких как пароли Linux или каталог LDAP.Внешняя аутентификация MySQL для Windows - Позволяет настроить MySQL для использования собственных служб Windows для проверки подлинности клиентских подключений. Пользователи, вошедшие в Windows, могут подключаться из клиентских программ MySQL к серверу на основе информации токена в своей среде без указания дополнительного пароля.Новый! Внешняя аутентификация MySQL для LDAP - Позволяет настроить MySQL для аутентификации пользователей через серверы LDAP (Lightweight Directory Access Protocol). Пользователи или группы пользователей могут быть указаны

подробно через спецификации LDAP. Имя пользователя / пароль и SASL

аутентификация поддерживаются.
8

предоставленный Infoscope Hellas L.P. под лицензией GPL.

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

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

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

4

Внешняя аутентификация MySQL для Windows:

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

0

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

Я был почти в той же ситуации. Тот'почему я пришел сюда! обычно я неПубликуйте сообщения, если я смогу найти их на машине Google;) snicker
1

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

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

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

6

https://dev.mysql.com/doc/relnotes/mysql/5.5/en/news-5-5-7.html

Это в версии 5.5.7 кандидата

Да, но в MySQL теперь есть поддержка подключаемых модулей аутентификации, нот какие-то фактические модули, верно? Так что я могу't настроить это для аутентификации в Windows, LDAP или NIS, пока кто-то не напишет их, насколько я понимаю ... GregW
Это'Все еще немного оканчивается, но если у вас есть настройка PAM-LDAP, вы можете использовать уже написанноеPAM плагин. quickshiftin
1

являются повезло :(

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

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

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

PostgreSQL может быть вариантом. У меня нетОн еще не развернут и в настоящее время находится на стадии планирования ... Хорошая вещь, которую я узнал до внедрения MySQL для решения и необходимости беспокоиться о переносе данных. Спасибо за это. snicker

Похожие вопросы