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