Spec-Zone.ru › MySQL 8.4

8.4.1.6 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.

Таблица 8.19 Имена плагина и библиотеки для аутентификации в Windows

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

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

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

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

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

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

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

Дополнительную информацию об аутентификации с плагинами в MySQL см. в Разделе 8.2.17, «Pluggable Authentication». Информацию о прокси-пользователях см. в Разделе 8.2.19, «Proxy Users».

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

Этот раздел описывает, как установить плагин аутентификации 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.

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

Удаление Windows Pluggable Authentication

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

    Также следует выполнить операторы 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 8.4 и более поздних версиях, см. .

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

Spec-Zone.ru

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