Spec-Zone.ru › MySQL Shell 9.2

4.3.5 Использование аутентификации LDAP и Kerberos

MySQL Enterprise Edition поддерживает методы аутентификации, которые позволяют MySQL Server использовать LDAP (Lightweight Directory Access Protocol), LDAP с Kerberos или нативный Kerberos для аутентификации пользователей MySQL. MySQL Shell поддерживает аутентификацию LDAP и Kerberos для подключений к классическому протоколу MySQL. Эта функциональность не поддерживается для подключений X Protocol.

Следующие разделы описывают, как включить подключения к серверу MySQL с использованием аутентификации LDAP и Kerberos. Предполагается, что сервер работает с включенным серверным плагином, а клиентский плагин доступен на хосте клиента.

  • Простая аутентификация LDAP

  • Аутентификация LDAP на основе SASL

  • Аутентификация GSSAPI/Kerberos через LDAP SASL

  • Аутентификация Kerberos

Простая аутентификация LDAP

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

  • Должна быть создана учетная запись пользователя на сервере MySQL, настроенная для связи с сервером LDAP. Пользователь MySQL должен быть идентифицирован с помощью серверного плагина authentication_ldap_simple и, необязательно, с помощью имени различения (DN) пользователя LDAP. Например:

    CREATE USER 'admin'@'localhost'
       IDENTIFIED WITH authentication_ldap_simple
       BY 'uid=admin,ou=People,dc=my-domain,dc=com';
    

    Оператор BY в данном примере указывает, к какой записи LDAP аутентифицируется учетная запись MySQL. Конкретные атрибуты DN могут различаться в зависимости от сервера LDAP.

  • MySQL Shell использует клиентский плагин mysql_clear_password, который отправляет пароль на сервер в виде открытого текста. Шифрование или хеширование пароля не используются, поэтому требуется безопасное соединение (с использованием SSL или сокетов) между MySQL Shell и сервером. Более подробную информацию см. в Разделе 4.3.4 «Использование зашифрованных подключений» или Разделе 4.3.3 «Подключение с использованием Unix-сокетов и именных каналов Windows».

  • Для минимизации рисков безопасности плагин mysql_clear_password должен быть явно включён, установив значение параметра командной строки --auth-method на clear_text_password при безопасном соединении. Например, следующая команда позволяет установить глобальную сессию для пользователя, созданного в предыдущем примере:

    $> mysqlsh admin@localhost:3308 --auth-method=clear_text_password
    Please provide the password for 'admin@localhost:3308': admin_password (admin LDAP password)
    
    Примечание

    Вы также можете установить переменную среды LIBMYSQL_ENABLE_CLEARTEXT_PLUGIN и включить плагин mysql_clear_password для всех клиентских подключений. Однако этот метод изначально небезопасен и не рекомендуется для использования в каких-либо сценариях, кроме тестирования. Дополнительную информацию см. в .

Аутентификация LDAP на основе SASL

MySQL Server может принимать подключения от пользователей, определённых вне таблиц наград MySQL в каталогах LDAP. Клиентские и серверные плагины LDAP SASL используют сообщения SASL для безопасной передачи учетных данных в рамках протокола LDAP (см. ).

Для аутентификации на основе SASL пользователь MySQL должен быть идентифицирован с помощью серверного плагина authentication_ldap_sasl и, необязательно, записи LDAP, к которой аутентифицируется учетная запись MySQL. Например:

CREATE USER 'sammy'@'localhost'
   IDENTIFIED WITH authentication_ldap_sasl
   BY 'uid=sammy_ldap,ou=People,dc=my-domain,dc=com';

Клиентский плагин authentication_ldap_sasl_client поставляется с пакетами MySQL Server, а не встроен в библиотеку клиента libmysqlclient. MySQL Shell предоставляет параметр сохранения соединения shell.options.mysqlPluginDir, который позволяет указать расположение необходимого плагина. В качестве альтернативы вы можете переопределить настройку сохранения, указав путь с помощью параметра командной строки --mysql-plugin-dir. Например, следующая команда позволяет установить глобальную сессию на хосте Linux для пользователя, созданного в предыдущем примере:

$> mysqlsh sammy@localhost:3308 --mysql-plugin-dir="/usr/local/mysql/lib/plugin"
Please provide the password for 'sammy@localhost:3308': sammy_password (sammy_ldap LDAP password)

Дополнительные примеры использования см. в и .

Аутентификация GSSAPI/Kerberos через LDAP SASL

MySQL Shell также поддерживает аутентификацию Kerberos через LDAP SASL. Используя абстракцию интерфейса приложения безопасности общего назначения (GSSAPI), подключение такого типа аутентифицируется с Kerberos для получения учетных данных службы, а затем эти учетные данные используются для безопасного доступа к другим службам. GSSAPI/Kerberos поддерживается как метод аутентификации LDAP для серверов MySQL и MySQL Shell только в Linux.

Для успешного подключения должна быть доступна библиотека GSSAPI и службы Kerberos на сервере MySQL. Сведения о конфигурации сервера см. в .

Следующий общий пример создает пользователя-прокси с именем lucy@MYSQL.LOCAL, который принимает права проксируемого пользователя с именем proxied_krb_usr. Предполагается, что домен области MYSQL.LOCAL настроен в файле конфигурации Kerberos /etc/krb5.conf.

Примечание

Часть имени учетной записи, включающая домен принципала, указывается как одно значение для аутентификации LDAP Kerberos, например, 'lucy@MYSQL.LOCAL'.

CREATE USER 'lucy@MYSQL.LOCAL'
   IDENTIFIED WITH authentication_ldap_sasl
   BY '#krb_grp=proxied_krb_user';
CREATE USER 'proxied_krb_user';
GRANT ALL PRIVILEGES ON my_db.* TO 'proxied_krb_user';
GRANT PROXY on 'proxied_krb_user' TO 'lucy@MYSQL.LOCAL';

Следующая команда позволяет установить глобальную сессию на хосте Linux для пользователя, созданного в предыдущем примере. Необходимо указать расположение директории плагинов сервера, либо как параметр сохранения подключения shell.options.mysqlPluginDir, либо как параметр командной строки, например:

$> mysqlsh lucy%40MYSQL.LOCAL:password@localhost:3308/my_db
--mysql-plugin-dir="/usr/local/mysql/lib/plugin"

В этом примере кодирование процентов (%40) заменяет зарезервированный символ @ в имени принципала, и password — значение переменной сервера MySQL authentication_ldap_sasl_bind_root_pwd. Список переменных сервера, связанных с аутентификацией Kerberos через LDAP SASL, см. в .

Перед вызовом MySQL Shell вы можете получить и кэшировать билет-генератор билетов (ticket-granting ticket) из центра распределения ключей независимо от MySQL. В этом случае вызовите MySQL Shell без указания имени пользователя или пароля:

$> mysqlsh localhost:3308/my_db --auth-method=authentication_ldap_sasl_client
--mysql-plugin-dir="/usr/local/mysql/lib/plugin"

Указание параметра --auth-method=authentication_ldap_sasl_client является обязательным, когда учетные данные пользователя не указаны.

Аутентификация Kerberos

MySQL Shell может устанавливать соединения для учетных записей, использующих плагин аутентификации на стороне сервера authentication_kerberos, при условии, что необходимые билеты Kerberos доступны или могут быть получены. Начиная с MySQL Enterprise Edition 8.0.27, эта возможность доступна на хостах под управлением Linux и Windows (версия 8.0.26 поддерживает только Linux). Подробную информацию о настройке см. в .

Аутентификация Kerberos может объединять имя пользователя (например, lucy) и доменную область (realm), указанные в учетной записи пользователя (например, MYSQL.LOCAL), для создания имени принципала пользователя (UPN), такого как lucy@MYSQL.LOCAL. Для создания учетной записи MySQL, соответствующей UPN lucy@MYSQL.LOCAL, используйте следующую команду:

CREATE USER 'lucy'
   IDENTIFIED WITH authentication_kerberos
   BY 'MYSQL.LOCAL';

Плагин на стороне клиента использует UPN и пароль для получения билета-генератора билетов (TGT), использует TGT для получения билета службы MySQL (ST) и использует ST для аутентификации на сервере MySQL.

Следующая команда позволяет установить глобальную сессию на хосте Linux для пользователя, созданного в предыдущем примере. Вы должны указать расположение каталога плагина сервера, либо как постоянный параметр подключения shell.options.mysqlPluginDir, либо как неперманентный параметр команды, например:

$> mysqlsh lucy:3308 --mysql-plugin-dir="/usr/local/mysql/lib/plugin"
Please provide the password for 'lucy@localhost:3308': UPN_password

Перед вызовом MySQL Shell вы можете получить и кэшировать TGT из центра распределения ключей независимо от MySQL. В этом случае вызовите MySQL Shell без указания имени пользователя или пароля:

$> mysqlsh localhost:3308 --auth-method=authentication_kerberos_client
--mysql-plugin-dir="/usr/local/mysql/lib/plugin"

Указание параметра --auth-method=authentication_kerberos_client обязательно, когда данные пользователя не указаны.

На платформах Microsoft Windows вы можете определить режим клиента Kerberos, SSPI или GSSAPI, используя параметр подключения plugin-authentication-kerberos-client-mode. Этот параметр доступен в следующих форматах:

  • Параметр командной строки: --plugin-authentication-kerberos-client-mode=SSPI | GSSAPI

  • Параметр запроса подключения: user@host:port?plugin-authentication-kerberos-client-mode=SSPI | GSSAPI

  • Параметр словаря URI: plugin-authentication-kerberos-client-mode': 'SSPI' | 'GSSAPI', например:

     shell.connect({'user': 'mysql', 'auth-method':'authentication_kerberos_client', 'host': '127.0.0.1',
                    'password': 'mysqlpa$$w0rd', 'plugin-authentication-kerberos-client-mode': 'GSSAPI',
                    'scheme': 'mysql'});
          

Вы также можете указать plugin-authentication-kerberos-client-mode в файле конфигурации. Если он присутствует в файле конфигурации, он используется по умолчанию.

Если plugin-authentication-kerberos-client-mode не определен, по умолчанию используется SSPI.

При подключении к серверу MySQL с использованием аутентификации Kerberos, режимы аутентификации ведут себя следующим образом:

  • GSSAPI:

    • Если пароль не указан, билет аутентификации извлекается из кэша MIT Kerberos. Если действительный билет не найден, соединение завершается ошибкой.

    • Если пароль указан, билет аутентификации извлекается с сервера Kerberos и сохраняется в кэше MIT Kerberos.

    • Если имя пользователя не указано, имя пользователя Windows используется в качестве имени учетной записи MySQL.

  • SSPI:

    • Если пароль не указан, используется билет единого входа Windows.

    • Если пароль указан, билет аутентификации сохраняется во временном кэше в оперативной памяти.

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

Spec-Zone.ru

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