8.4.1.5 Подключаемая аутентификация Windows
Подключаемая аутентификация Windows — это расширение, включенное в MySQL Enterprise Edition, коммерческий продукт. Чтобы узнать больше о коммерческих продуктах, см. https://www.mysql.com/products/.
MySQL Enterprise Edition для Windows поддерживает метод аутентификации, который выполняет внешнюю аутентификацию в Windows, позволяя MySQL Server использовать собственные службы Windows для аутентификации подключений клиентов. Пользователи, которые вошли в систему Windows, могут подключаться к серверу из программ-клиентов MySQL на основе информации в своей среде без указания дополнительного пароля.
Клиент и сервер обмениваются пакетами данных в процессе рукопожатия аутентификации. В результате этого обмена сервер создает объект контекста безопасности, представляющий личность клиента в операционной системе Windows. Эта личность включает имя учетной записи клиента. Подключаемая аутентификация Windows использует идентификацию клиента для проверки, является ли это конкретной учетной записью или членом группы. По умолчанию для переговоров используется Kerberos для аутентификации, а затем NTLM, если Kerberos недоступен.
Подключаемая аутентификация Windows предоставляет следующие возможности:
Внешняя аутентификация: аутентификация Windows позволяет MySQL Server принимать подключения от пользователей, определенных за пределами таблиц грантов MySQL, которые вошли в систему Windows.
Поддержка прокси-пользователей: аутентификация Windows может возвращать MySQL имя пользователя, отличное от внешнего имени пользователя, переданного программой-клиентом. Это означает, что плагин может возвращать пользователя MySQL, который определяет привилегии, которые должен иметь внешний пользователь, аутентифицированный в Windows. Например, пользователь Windows с именем
joeможет подключаться и иметь привилегии пользователя MySQL с именемdeveloper.
В следующей таблице показаны имена плагина и файла библиотеки. Файл должен находиться в каталоге, указанном переменной системы plugin_dir.
Таблица 8.18 Имена плагина и библиотеки для аутентификации Windows
| Плагин или файл | Имя плагина или файла |
|---|---|
| Плагин на стороне сервера | authentication_windows |
| Плагин на стороне клиента | authentication_windows_client |
| Файл библиотеки | authentication_windows.dll |
Файл библиотеки включает только плагин на стороне сервера. Плагин на стороне клиента встроен в библиотеку клиента libmysqlclient.
Плагин аутентификации Windows на стороне сервера включен только в MySQL Enterprise Edition. Он не включен в дистрибутивы MySQL Community. Плагин на стороне клиента включен во все дистрибутивы, включая Community, что позволяет клиентам из любого дистрибутива подключаться к серверу, на котором загружен плагин на стороне сервера.
В следующих разделах представлена информация об установке и использовании, специфичная для подключаемой аутентификации Windows:
Дополнительную информацию об аутентификации плагинов в MySQL см. в Разделе 8.2.17 «Аутентификация плагинов». Сведения о прокси-пользователях см. в Разделе 8.2.19 «Прокси-пользователи».
Установка подключаемого модуля аутентификации Windows
В этом разделе описывается, как установить плагин аутентификации Windows на стороне сервера. Дополнительную информацию об установке плагинов см. в Разделе 7.6.1 «Установка и удаление плагинов».
Для использования плагином сервером, файл библиотеки плагина должен располагаться в каталоге плагинов MySQL (каталог, указанный переменной системы plugin_dir). При необходимости, настройте расположение каталога плагинов, установив значение plugin_dir при запуске сервера.
Для загрузки плагина при запуске сервера используйте параметр --plugin-load-add, чтобы указать имя файла библиотеки, содержащей плагин. С этим методом загрузки плагина параметр должен указываться каждый раз при запуске сервера. Например, добавьте эти строки в файл сервера my.cnf:
[mysqld]
plugin-load-add=authentication_windows.dll
После изменения my.cnf перезапустите сервер, чтобы новые настройки вступили в силу.
В качестве альтернативы, для загрузки плагина во время выполнения, используйте это утверждение:
INSTALL PLUGIN authentication_windows SONAME 'authentication_windows.dll';
INSTALL PLUGIN загружает плагин немедленно и также регистрирует его в таблице системы mysql.plugins, чтобы заставить сервер загрузить его при каждом последующем нормальном запуске без необходимости в --plugin-load-add.
Для проверки установки плагина, проверьте таблицу Information Schema PLUGINS или используйте оператор SHOW PLUGINS (см. Раздел 7.6.2 «Получение информации о серверных плагинах»). Например:
mysql> SELECT PLUGIN_NAME, PLUGIN_STATUS
FROM INFORMATION_SCHEMA.PLUGINS
WHERE PLUGIN_NAME LIKE '%windows%';
+------------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+------------------------+---------------+
| authentication_windows | ACTIVE |
+------------------------+---------------+
Если плагин не удалось инициализировать, проверьте журнал ошибок сервера на наличие диагностических сообщений.
Чтобы связать учетные записи MySQL с плагином аутентификации Windows, см. Использование подключаемой аутентификации Windows. Дополнительный контроль плагина предоставляется переменными системы authentication_windows_use_principal_name и authentication_windows_log_level. См. Раздел 7.1.8 «Переменные системы сервера».
Удаление подключаемого модуля аутентификации Windows
Способ удаления плагина аутентификации Windows зависит от способа его установки:
Если вы установили плагин при запуске сервера, используя параметр
--plugin-load-add, перезапустите сервер без этого параметра.-
Если вы установили плагин во время выполнения, используя оператор
INSTALL PLUGIN, он остается установленным после перезапуска сервера. Для его удаления используйтеUNINSTALL PLUGIN:UNINSTALL PLUGIN authentication_windows;
Кроме того, удалите любые параметры запуска, устанавливающие переменные системы, связанные с плагином Windows.
Использование плагина проверки подлинности Windows
Плагин проверки подлинности Windows поддерживает использование учетных записей MySQL таким образом, что пользователи, авторизованные в Windows, могут подключаться к серверу MySQL без необходимости ввода дополнительного пароля. Предполагается, что сервер работает с включённым плагином на стороне сервера, как описано в Установка плагина проверки подлинности Windows. После того, как администратор базы данных включит плагин на стороне сервера и настроит учетные записи для его использования, клиенты могут подключаться с использованием этих учетных записей без дополнительных настроек со своей стороны.
Для ссылки на плагин проверки подлинности Windows в разделе IDENTIFIED WITH оператора CREATE USER используйте имя authentication_windows. Предположим, что пользователям Windows Rafal и Tasha следует разрешить подключение к MySQL, а также любым пользователям в группе Administrators или Power
Users. Для настройки этого создайте учетную запись MySQL с именем sql_admin, использующую плагин Windows для проверки подлинности:
CREATE USER sql_admin
IDENTIFIED WITH authentication_windows
AS 'Rafal, Tasha, Administrators, "Power Users"';
Имя плагина — authentication_windows. Строка после ключевого слова AS — это строка проверки подлинности. Она указывает, что пользователям Windows с именами Rafal или Tasha разрешено авторизоваться на сервере как пользователю MySQL sql_admin, а также любым пользователям Windows в группе Administrators или Power
Users. Последнее имя группы содержит пробел, поэтому оно должно быть заключено в двойные кавычки.
После создания учетной записи sql_admin пользователь, авторизованный в Windows, может попытаться подключиться к серверу с использованием этой учетной записи:
C:\> mysql --user=sql_admin
Здесь пароль не требуется. Плагин authentication_windows использует API безопасности Windows для проверки того, какой пользователь Windows подключается. Если этот пользователь имеет имя Rafal или Tasha или является членом группы Administrators или Power
Users, сервер предоставляет доступ, и клиент авторизуется как sql_admin и имеет те привилегии, которые предоставлены учетной записи sql_admin. В противном случае сервер отказывает в доступе.
Синтаксис строки проверки подлинности для плагина проверки подлинности Windows подчиняется следующим правилам:
Строка состоит из одной или нескольких сопоставлений пользователей, разделенных запятыми.
-
Каждое сопоставление пользователя связывает имя пользователя или группы Windows с именем пользователя MySQL:
win_user_or_group_name=mysql_user_namewin_user_or_group_nameВ последнем синтаксисе, если значение
mysql_user_nameне указано, предполагается значение, созданное операторомCREATE USER. Таким образом, эти операторы эквивалентны:CREATE USER sql_admin IDENTIFIED WITH authentication_windows AS 'Rafal, Tasha, Administrators, "Power Users"'; CREATE USER sql_admin IDENTIFIED WITH authentication_windows AS 'Rafal=sql_admin, Tasha=sql_admin, Administrators=sql_admin, "Power Users"=sql_admin'; Каждый обратный слэш (
\) в значении должен быть удвоен, так как обратный слэш является символом экранирования в строках MySQL.Пробелы в начале и конце, не находящиеся внутри двойных кавычек, игнорируются.
Необрамлённые значения
win_user_or_group_nameиmysql_user_nameмогут содержать любые символы, кроме знака равенства, запятой или пробела.Если значения
win_user_or_group_nameи/илиmysql_user_nameзаключены в двойные кавычки, то всё между кавычками является частью значения. Это необходимо, например, если имя содержит пробелы. Все символы внутри двойных кавычек допустимы, кроме двойных кавычек и обратного слэша. Для включения любого из этих символов необходимо экранировать его обратным слэшем.-
Значения
win_user_or_group_nameиспользуют стандартный синтаксис для принципалов Windows, как локальных, так и в домене. Примеры (обратите внимание на удвоение обратных слэшей):domain\\user .\\user domain\\group .\\group BUILTIN\\WellKnownGroup
При вызове сервером для проверки подлинности клиента плагин сканирует строку проверки подлинности слева направо в поисках совпадения пользователя или группы с пользователем Windows. Если совпадение найдено, плагин возвращает соответствующее mysql_user_name серверу MySQL. Если совпадения нет, проверка подлинности завершается неудачно.
Совпадение имени пользователя имеет приоритет над совпадением имени группы. Предположим, что пользователь Windows с именем win_user является членом группы win_group, и строка проверки подлинности выглядит следующим образом:
'win_group = sql_user1, win_user = sql_user2'
Когда win_user подключается к серверу MySQL, есть совпадение как с win_group, так и с win_user. Плагин проверяет подлинность пользователя как sql_user2, потому что более конкретное совпадение имени пользователя имеет приоритет над совпадением имени группы, даже если группа указана первой в строке проверки подлинности.
Проверка подлинности Windows всегда работает для подключений с одного компьютера, на котором работает сервер. Для подключений между компьютерами оба компьютера должны быть зарегистрированы в Microsoft Active Directory. Если они находятся в одном домене Windows, нет необходимости указывать имя домена. Также можно разрешить подключения из другого домена, как в этом примере:
CREATE USER sql_accounting
IDENTIFIED WITH authentication_windows
AS 'SomeDomain\\Accounting';
Здесь SomeDomain — имя другого домена. Символ обратного слэша удваивается, так как это символ экранирования MySQL в строках.
MySQL поддерживает концепцию прокси-пользователей, при которой клиент может подключаться и проходить проверку подлинности на сервере MySQL с использованием одной учетной записи, но при подключении обладает привилегиями другой учетной записи (см. Раздел 8.2.19, «Прокси-пользователи»). Предположим, что вы хотите, чтобы пользователи Windows подключались с использованием одного имени пользователя, но отображались на основе своих имён пользователей и имён групп Windows на определённые учетные записи MySQL следующим образом:
Локальные и доменные пользователи Windows
local_userиMyDomain\domain_userдолжны отображаться на учетную запись MySQLlocal_wlad.Пользователи в доменной группе
MyDomain\Developersдолжны отображаться на учетную запись MySQLlocal_dev.Администраторы локальной машины должны отображаться на учетную запись MySQL
local_admin.
Для настройки этого создайте прокси-учетную запись для подключения пользователей Windows и настройте эту учетную запись так, чтобы пользователи и группы отображались на соответствующие учетные записи MySQL (local_wlad, local_dev, local_admin). Кроме того, предоставьте учетным записям MySQL привилегии, соответствующие выполняемым ими операциям. В следующих инструкциях используется win_proxy в качестве прокси-учетной записи, а local_wlad, local_dev и local_admin в качестве проксируемых учетных записей.
-
Создайте прокси-учетную запись MySQL:
CREATE USER win_proxy IDENTIFIED WITH authentication_windows AS 'local_user = local_wlad, MyDomain\\domain_user = local_wlad, MyDomain\\Developers = local_dev, BUILTIN\\Administrators = local_admin'; -
Для работы проксирования проксируемые учетные записи должны существовать, поэтому создайте их:
CREATE USER local_wlad IDENTIFIED WITH mysql_no_login; CREATE USER local_dev IDENTIFIED WITH mysql_no_login; CREATE USER local_admin IDENTIFIED WITH mysql_no_login;
Проксируемые учетные записи используют плагин проверки подлинности
mysql_no_login, чтобы предотвратить использование клиентов для входа на сервер MySQL напрямую. Вместо этого пользователи, прошедшие проверку подлинности с помощью Windows, должны использовать прокси-учетную записьwin_proxy. (Это предполагает, что плагин установлен. Инструкции см. в Разделе 8.4.1.8, «Проверка подлинности без входа».) Для альтернативных способов защиты проксируемых учетных записей от прямого использования см. Предотвращение прямого входа в проксируемые учетные записи.Вы также должны выполнить операторы
GRANT(не показаны), предоставляющие каждой проксируемой учетной записи необходимые для доступа к MySQL привилегии. -
Предоставьте прокси-учетной записи привилегию
PROXYдля каждой проксируемой учетной записи:GRANT PROXY ON local_wlad TO win_proxy; GRANT PROXY ON local_dev TO win_proxy; GRANT PROXY ON local_admin TO win_proxy;
Теперь пользователи Windows local_user и MyDomain\domain_user могут подключаться к серверу MySQL как win_proxy и при авторизации обладают привилегиями учетной записи, указанной в строке проверки подлинности (в данном случае, local_wlad). Пользователь из группы MyDomain\Developers, который подключается как win_proxy, обладает привилегиями учетной записи local_dev. Пользователь из группы BUILTIN\Administrators обладает привилегиями учетной записи local_admin.
Для настройки проверки подлинности таким образом, чтобы все пользователи Windows, у которых нет собственной учетной записи MySQL, проходили через прокси-учетную запись, замените стандартную прокси-учетную запись (''@'') на win_proxy в предыдущих инструкциях. Сведения о стандартных прокси-учетных записях см. в Разделе 8.2.19, «Прокси-пользователи».
Если в вашей установке MySQL есть анонимные пользователи, они могут конфликтовать со стандартным прокси-пользователем. Дополнительные сведения об этой проблеме и способах её решения см. в Конфликтах стандартного прокси-пользователя и анонимных пользователей.
Для использования плагина проверки подлинности Windows с строками подключений Connector/NET в Connector/NET 9.2 и выше, см. .
© 2025 Oracle
Licensed under the GPLv2 License.