Spec-Zone.ru › MariaDB

Плагин аутентификации — ed25519

MySQL использует аутентификацию на основе SHA-1 с версии 4.1. С MariaDB 5.2 этот плагин аутентификации называется mysql_native_password. С течением времени, по мере увеличения скорости компьютеров, появлялись новые атаки на SHA-1. В настоящее время SHA-1 больше не считается таким же безопасным, как в 2001 году. Вот почему был создан плагин аутентификации ed25519.

Плагин аутентификации ed25519 использует алгоритм Эллиптической Кривой Цифровой Подписи (ECDSA) для безопасного хранения паролей пользователей и аутентификации пользователей. Алгоритм ed25519 — тот же, что используется OpenSSH. Он основан на эллиптической кривой и коде, созданном Дэниелом Дж. Бернштейном.

С точки зрения пользователя, плагин аутентификации ed25519 по-прежнему обеспечивает традиционную аутентификацию по паролю.

Установка плагина

Хотя общая библиотека плагина по умолчанию распространяется с MariaDB как auth_ed25519.so или auth_ed25519.dll в зависимости от операционной системы, сам плагин не устанавливается MariaDB по умолчанию. Существует два метода установки плагина с MariaDB.

Первый метод можно использовать для установки плагина без перезапуска сервера. Вы можете установить плагин динамически, выполнив INSTALL SONAME или INSTALL PLUGIN. Например:

INSTALL SONAME 'auth_ed25519';

Второй метод используется для указания серверу загружать плагин при запуске. Плагин можно установить таким образом, предоставив опции --plugin-load или --plugin-load-add. Это можно указать в качестве аргумента командной строки для mysqld, или в соответствующей группе опций сервера в файле опций группа опций в файле опций. Например:

[mariadb]
...
plugin_load_add = auth_ed25519

Удаление плагина

Вы можете удалить плагин динамически, выполнив UNINSTALL SONAME или UNINSTALL PLUGIN. Например:

UNINSTALL SONAME 'auth_ed25519';

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

Создание пользователей

MariaDB начиная с 10.4

В MariaDB 10.4 и более поздних версиях вы можете создать учетную запись пользователя, выполнив оператор CREATE USER и указав предложение IDENTIFIED VIA с именем плагина, которое является ed25519, и указав предложение USING с функцией PASSWORD() и текстовым паролем в качестве аргумента. Например:

CREATE USER username@hostname IDENTIFIED VIA ed25519 USING PASSWORD('secret');

Если SQL_MODE не имеет NO_AUTO_CREATE_USER установленным, вы также можете создать учетную запись пользователя с помощью GRANT. Например:

GRANT SELECT ON db.* TO username@hostname IDENTIFIED VIA ed25519 USING PASSWORD('secret');
MariaDB до 10.3

В MariaDB 10.3 и ранее функция PASSWORD() и оператор SET PASSWORD не работали с плагином аутентификации ed25519. Вместо этого вам нужно будет использовать UDF, поставляемый с плагином аутентификации, для вычисления хэша пароля. Например:

CREATE FUNCTION ed25519_password RETURNS STRING SONAME "auth_ed25519.so";

Теперь вы можете вычислить хэш пароля, выполнив:

SELECT ed25519_password("secret");
+---------------------------------------------+
| SELECT ed25519_password("secret");          |
+---------------------------------------------+
| ZIgUREUg5PVgQ6LskhXmO+eZLS0nC8be6HPjYWR4YJY |
+---------------------------------------------+

Теперь вы можете использовать его для создания учетной записи пользователя с новым хэшем пароля.

Чтобы создать учетную запись пользователя с помощью CREATE USER, укажите имя плагина в предложении IDENTIFIED VIA, предоставив хэш пароля в качестве USING предложения. Например:

CREATE USER username@hostname IDENTIFIED VIA ed25519 
  USING 'ZIgUREUg5PVgQ6LskhXmO+eZLS0nC8be6HPjYWR4YJY';

Если SQL_MODE не имеет NO_AUTO_CREATE_USER установленным, вы также можете создать учетную запись пользователя с помощью GRANT. Например:

GRANT SELECT ON db.* TO username@hostname IDENTIFIED VIA ed25519 
  USING 'ZIgUREUg5PVgQ6LskhXmO+eZLS0nC8be6HPjYWR4YJY';

Обратите внимание, что пользователям требуется пароль для подключения. Можно создать пользователя без указания пароля, но они не смогут подключиться.

Изменение паролей пользователей

MariaDB начиная с 10.4

В MariaDB 10.4 и более поздних версиях вы можете изменить пароль учетной записи пользователя, выполнив оператор SET PASSWORD с последующей функцией PASSWORD() и текстовым паролем в качестве аргумента. Например:

SET PASSWORD =  PASSWORD('new_secret')

Вы также можете изменить пароль учетной записи пользователя с помощью оператора ALTER USER. Вам нужно будет указать имя плагина в предложении IDENTIFIED VIA, предоставив текстовый пароль в качестве аргумента функции PASSWORD() в USING предложении. Например:

ALTER USER username@hostname IDENTIFIED VIA ed25519 USING PASSWORD('new_secret');
MariaDB до 10.3

В MariaDB 10.3 и ранее функция PASSWORD() и оператор SET PASSWORD не работали с плагином аутентификации ed25519. Вместо этого вам нужно будет использовать UDF, поставляемый с плагином аутентификации, для вычисления хэша пароля. Например:

CREATE FUNCTION ed25519_password RETURNS STRING SONAME "auth_ed25519.so";

Теперь вы можете вычислить хэш пароля, выполнив:

SELECT ed25519_password("secret");
+---------------------------------------------+
| SELECT ed25519_password("secret");          |
+---------------------------------------------+
| ZIgUREUg5PVgQ6LskhXmO+eZLS0nC8be6HPjYWR4YJY |
+---------------------------------------------+

Теперь вы можете изменить пароль учетной записи пользователя, используя новый хэш пароля.

Вы можете изменить пароль учетной записи пользователя с помощью оператора ALTER USER. Вам нужно будет указать имя плагина в предложении IDENTIFIED VIA, предоставив хэш пароля в качестве USING предложения. Например:

ALTER USER username@hostname IDENTIFIED VIA ed25519 
  USING 'ZIgUREUg5PVgQ6LskhXmO+eZLS0nC8be6HPjYWR4YJY';

Плагины аутентификации клиентов

Для клиентов, использующих библиотеки libmysqlclient или MariaDB Connector/C, MariaDB предоставляет один плагин аутентификации клиента, совместимый с плагином аутентификации ed25519:

  • client_ed25519

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

mysql --plugin-dir=/usr/local/mysql/lib64/mysql/plugin --user=alice

client_ed25519

Плагин аутентификации клиента client_ed25519 хеширует и подписывает пароль с помощью алгоритма Эллиптической Кривой Цифровой Подписи (ECDSA) перед отправкой на сервер.

Поддержка в библиотеках клиентов

Использование плагина с MariaDB Connector/C

MariaDB Connector/C поддерживает аутентификацию ed25519 с использованием плагинов аутентификации клиентов, упомянутых в предыдущем разделе, начиная с MariaDB Connector/C 3.1.0.

Использование плагина с MariaDB Connector/ODBC

MariaDB Connector/ODBC поддерживает аутентификацию ed25519 с использованием плагинов аутентификации клиентов, упомянутых в предыдущем разделе, начиная с MariaDB Connector/ODBC 3.1.2.

Использование плагина с MariaDB Connector/J

MariaDB Connector/J поддерживает аутентификацию ed25519 начиная с MariaDB Connector/J 2.2.1.

Использование плагина с MariaDB Connector/Node.js

MariaDB Connector/Node.js поддерживает аутентификацию ed25519 начиная с MariaDB Connector/Node.js 2.1.0.

Использование плагина с MySqlConnector для .NET

MySqlConnector для ADO.NET поддерживает аутентификацию ed25519 начиная с MySqlConnector 0.56.0.

Поддержка этого плагина аутентификации была реализована в отдельном пакете NuGet под названием MySqlConnector.Authentication.Ed25519. После установки пакета ваше приложение должно вызвать Ed25519AuthenticationPlugin.Install для его активации.

Версии

Версия Статус Введено
1.1 Стабильная MariaDB 10.4.0
1.0 Стабильная MariaDB 10.3.8, MariaDB 10.2.17, MariaDB 10.1.35
1.0 Бета MariaDB 10.2.5, MariaDB 10.1.22

Параметры

ed25519

  • Описание: Управляет тем, как сервер должен обрабатывать плагин при запуске.
    • Допустимые значения:
      • OFF - Отключает плагин, не удаляя его из таблицы mysql.plugins.
      • ON - Включает плагин. Если плагин не может быть инициализирован, сервер всё равно продолжит запуск, но плагин будет отключён.
      • FORCE - Включает плагин. Если плагин не может быть инициализирован, сервер завершит запуск с ошибкой.
      • FORCE_PLUS_PERMANENT - Включает плагин. Если плагин не может быть инициализирован, сервер завершит запуск с ошибкой. Кроме того, плагин нельзя удалить с помощью UNINSTALL SONAME или UNINSTALL PLUGIN во время работы сервера.
    • Для получения дополнительной информации см. Обзор плагинов: Настройка активации плагина при запуске сервера.
  • Командная строка: --ed25519=value
  • Тип данных: enumerated
  • Значение по умолчанию: ON
  • Допустимые значения: OFF, ON, FORCE, FORCE_PLUS_PERMANENT

Содержимое, воспроизведённое на этом сайте, является собственностью соответствующих владельцев, и это содержимое не проходит предварительную проверку со стороны MariaDB. Мнения, информация и мнения, выраженные в этом содержимом, не обязательно отражают точку зрения MariaDB или любой другой стороны.

© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/authentication-plugin-ed25519/

Spec-Zone.ru

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