Spec-Zone.ru › MySQL 5.7

6.4.1.8 Windows Pluggable Authentication

Примечание

Windows Pluggable Authentication — это расширение, включенное в MySQL Enterprise Edition, коммерческий продукт. Дополнительную информацию о коммерческих продуктах см. на странице https://www.mysql.com/products/.

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

Клиент и сервер обмениваются пакетами данных в процессе рукопожатия аутентификации. В результате этого обмена сервер создает объект контекста безопасности, представляющий личность клиента в ОС Windows. Эта личность включает имя учетной записи клиента. Windows Pluggable Authentication использует личность клиента для проверки, является ли это заданная учетная запись или член группы. По умолчанию переговоры используют Kerberos для аутентификации, а затем NTLM, если Kerberos недоступен.

Windows Pluggable Authentication предоставляет следующие возможности:

  • Внешняя аутентификация: аутентификация Windows позволяет MySQL Server принимать подключения от пользователей, определенных вне таблиц разрешений MySQL, которые авторизованы в Windows.

  • Поддержка пользователей-прокси: аутентификация Windows может возвращать MySQL имя пользователя, отличное от имени внешнего пользователя, переданного программой-клиентом. Это означает, что плагин может возвращать MySQL-пользователя, определяющего привилегии, которые должен иметь внешний пользователь, авторизованный в Windows. Например, пользователь Windows с именем joe может подключаться и иметь привилегии MySQL-пользователя с именем developer.

В следующей таблице показаны имена плагина и файла библиотеки. Файл должен находиться в каталоге, указанном переменной среды plugin_dir.

Таблица 6.14 Названия плагина и библиотеки для аутентификации Windows

Таблица 6.14 Названия плагина и библиотеки для аутентификации Windows
Плагин или файл Название плагина или файла
Плагин на стороне сервера authentication_windows
Плагин на стороне клиента authentication_windows_client
Файл библиотеки authentication_windows.dll

Файл библиотеки содержит только плагин на стороне сервера. Плагин на стороне клиента встроен в библиотеку клиента libmysqlclient.

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

В следующих разделах приведена информация об установке и использовании, специфичная для аутентификации Windows Pluggable:

  • Установка Windows Pluggable Authentication

  • Удаление Windows Pluggable Authentication

  • Использование Windows Pluggable Authentication

Для получения общей информации об аутентификации с плагинами в MySQL см. Раздел 6.2.13, «Pluggable Authentication». Сведения о пользователях-прокси см. в Разделе 6.2.14, «Proxy Users».

Установка Windows Pluggable Authentication

В этом разделе описывается, как установить плагин аутентификации Windows на стороне сервера. Для общей информации об установке плагинов см. Раздел 5.5.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.

Для проверки установки плагина, проверьте таблицу схемы информации PLUGINS или используйте оператор SHOW PLUGINS (см. Раздел 5.5.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 Pluggable Authentication. Дополнительный контроль над плагином обеспечивают переменные среды authentication_windows_use_principal_name и authentication_windows_log_level. См. Раздел 5.1.7, «Переменные среды сервера».

Удаление Windows Pluggable Authentication

Способ удаления плагина аутентификации Windows зависит от способа его установки:

  • Если вы установили плагин при запуске сервера с помощью параметра --plugin-load-add, перезапустите сервер без этого параметра.

  • Если вы установили плагин во время работы с оператором INSTALL PLUGIN, он остаётся установленным после перезапуска сервера. Чтобы удалить его, используйте оператор UNINSTALL PLUGIN:

    UNINSTALL PLUGIN authentication_windows;
    

Кроме того, удалите любые параметры запуска, которые устанавливают переменные среды, относящиеся к плагину Windows.

Использование аутентификации Windows Pluggable

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

Для обращения к плагину аутентификации 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_name
    win_user_or_group_name
    

    Для последнего синтаксиса, при отсутствии значения mysql_user_name, неявным значением является пользователь MySQL, созданный оператором 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 с одной учетной записью, но при подключении имеет привилегии другой учетной записи (см. Раздел 6.2.14, «Proxy Users»). Предположим, что вы хотите, чтобы пользователи Windows подключались с использованием одного имени пользователя, но были сопоставлены по своим именам пользователей и группам Windows на определенные учетные записи MySQL следующим образом:

  • Локальные и доменные пользователи Windows local_user и MyDomain\domain_user должны быть сопоставлены с учетной записью MySQL local_wlad.

  • Пользователи в группе домена MyDomain\Developers должны быть сопоставлены с учетной записью MySQL local_dev.

  • Администраторы локальной машины должны быть сопоставлены с учетной записью MySQL local_admin.

Для настройки этого создайте прокси-учетную запись для подключения пользователей Windows и настройте эту учетную запись таким образом, чтобы пользователи и группы были сопоставлены с соответствующими учетными записями MySQL (local_wlad, local_dev, local_admin). Кроме того, предоставьте учетным записям MySQL привилегии, соответствующие необходимым операциям. В следующих инструкциях используется win_proxy в качестве прокси-учетной записи, а local_wlad, local_dev и local_admin — в качестве прокси-учетных записей.

  1. Создайте прокси-учетную запись 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';
    
  2. Для работы проксирования проксируемые учетные записи должны существовать, поэтому создайте их:

    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. (Это предполагает, что плагин установлен. Инструкции см. в Разделе 6.4.1.10, «No-Login Pluggable Authentication».) Для альтернативных методов защиты проксируемых учетных записей от прямого использования см. Предотвращение прямого входа в проксируемые учетные записи.

    Вам также следует выполнить операторы GRANT (не показаны), которые предоставляют каждой проксируемой учетной записи привилегии, необходимые для доступа к MySQL.

  3. Предоставьте прокси-учетной записи привилегию 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 в предыдущих инструкциях. Сведения о стандартных прокси-учетных записях см. в Разделе 6.2.14, «Proxy Users».

Примечание

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

Чтобы использовать плагин аутентификации Windows с строками подключения Connector/NET в Connector/NET 8.0 и выше, см. .

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/windows-pluggable-authentication.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API