Spec-Zone.ru › MySQL 9.2

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

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

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

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

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

  • Установка подключаемой аутентификации Windows

  • Удаление подключаемой аутентификации Windows

  • Использование подключаемой аутентификации 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.

END_OF_DOCUMENT_MARKER
Использование плагина проверки подлинности 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_name
    win_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 должны отображаться на учетную запись 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. (Это предполагает, что плагин установлен. Инструкции см. в Разделе 8.4.1.8, «Проверка подлинности без входа».) Для альтернативных способов защиты проксируемых учетных записей от прямого использования см. Предотвращение прямого входа в проксируемые учетные записи.

    Вы также должны выполнить операторы 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 в предыдущих инструкциях. Сведения о стандартных прокси-учетных записях см. в Разделе 8.2.19, «Прокси-пользователи».

Примечание

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

Для использования плагина проверки подлинности Windows с строками подключений Connector/NET в Connector/NET 9.2 и выше, см. .

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

Spec-Zone.ru

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