Подключаемый модуль аутентификации MySQL8 — Windows Pluggable Authentication

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

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

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

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

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

Названия плагинов и библиотек

плагин или файл

плагин или имя файла

Серверный плагин

authentication_windows

Плагин на стороне клиента

аутентификация_windows_client

Файл библиотеки

authentication_windows.dll

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

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

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

Чтобы сервер мог использовать файлы библиотеки подключаемых модулей, они должны располагаться в каталоге подключаемых модулей 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. Например:

SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%windows%';
+------------------------+---------------+
| PLUGIN_NAME | PLUGIN_STATUS |
+------------------------+---------------+
| authentication_windows | ACTIVE |
+------------------------+---------------+

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

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

Метод, используемый для удаления подключаемого модуля проверки подлинности Windows, зависит от того, как вы его установили:

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

● Если вы устанавливаете подключаемый модуль во время выполнения с помощью оператора INSTALL PLUGIN, он остается установленным после перезапуска сервера. Чтобы удалить его, используйте УДАЛИТЬ ПЛАГИН:

UNINSTALL PLUGIN authentication_windows;

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

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

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

Создайте учетную запись 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 в группах администраторов или опытных пользователей. Последнее имя группы содержит пробел и поэтому должно быть заключено в двойные кавычки.

После создания учетной записи sql_admin пользователь, вошедший в Windows, может попытаться подключиться к серверу, используя эту учетную запись:

mysql --user=sql_admin

Здесь пароль не требуется. Подключаемый модуль authentication_windows проверяет подключающегося пользователя Windows с помощью API безопасности Windows. Если пользователя зовут Rafal или Tasha или он является членом группы администраторов или опытных пользователей, сервер предоставит доступ, и клиент будет аутентифицирован как 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';

● Каждый символ обратной косой черты (\) в значении должен быть удвоен, поскольку обратная косая черта является escape-символом в строках 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 — это имя другого домена. Символ обратной косой черты удваивается, потому что это escape-символ MySQL в строке.

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

● local_user и MyDomain\domain_user Локальные и доменные пользователи Windows должны быть сопоставлены с учетной записью 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 代理帐户。

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

3. Предоставьте учетным записям прокси разрешения прокси для каждой учетной записи прокси:

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). Пользователь, подключающийся как win_proxy в группе MyDomain\Developers, имеет разрешения для учетной записи local_dev. Пользователи в группе ВСТРОЕННЫЕ\Администраторы имеют разрешения учетной записи local_admin.

Чтобы настроить аутентификацию таким образом, чтобы все пользователи Windows, не имеющие собственной учетной записи MySQL, проходили через учетную запись прокси-сервера, замените win_proxy учетной записью прокси-сервера по умолчанию (''@'') в предыдущих инструкциях.

Объяснение: Если MySQL установлен с анонимными пользователями, они могут конфликтовать с прокси-пользователем по умолчанию.

Supongo que te gusta

Origin blog.csdn.net/weixin_44496870/article/details/131380545
Recomendado
Clasificación