API плагина проверки паролей
«Проверка паролей» означает обеспечение соответствия паролей пользователей определённым минимальным требованиям безопасности. Специальный API плагина позволяет создавать плагины проверки паролей, которые будут проверять пароли пользователей при их установке (в операциях УСТАНОВКИ ПАРОЛЯ и НАДЕЛЕНИЯ ПРАВАМИ) и либо допускать, либо отклонять их.
Расширения на уровне SQL
MariaDB поставляется с тремя плагинами проверки паролей — плагином simple_password_check, плагином cracklib_password_check и плагином password_reuse_check. Они не включены по умолчанию; используйте оператор INSTALL SONAME (или INSTALL PLUGIN), чтобы установить их.
Когда загружен хотя бы один плагин проверки паролей, все новые пароли будут проверены, а операции изменения пароля завершатся с ошибкой, если пароль не пройдёт проверку. Несколько плагинов проверки паролей могут быть загружены одновременно — в этом случае пароль должен пройти все проверки всех плагинов.
Операции изменения пароля
Для изменения пароля пользователя можно использовать различные операторы SQL:
С текстовым паролем
SET PASSWORD = PASSWORD('plain-text password');
SET PASSWORD FOR `user`@`host` = PASSWORD('plain-text password');
SET PASSWORD = OLD_PASSWORD('plain-text password');
SET PASSWORD FOR `user`@`host` = OLD_PASSWORD('plain-text password');
CREATE USER `user`@`host` IDENTIFIED BY 'plain-text password';
GRANT privileges TO `user`@`host` IDENTIFIED BY 'plain-text password';
Эти операторы подвержены проверке паролей. Если загружен хотя бы один плагин проверки паролей, текстовые пароли, указанные в этих операторах, будут проверены.
С хэшем пароля
SET PASSWORD = 'password hash'; SET PASSWORD FOR `user`@`host` = 'password hash'; CREATE USER `user`@`host` IDENTIFIED BY PASSWORD 'password hash'; CREATE USER `user`@`host` IDENTIFIED VIA mysql_native_password USING 'password hash'; CREATE USER `user`@`host` IDENTIFIED VIA mysql_old_password USING 'password hash'; GRANT privileges TO `user`@`host` IDENTIFIED BY PASSWORD 'password hash'; GRANT privileges TO `user`@`host` IDENTIFIED VIA mysql_native_password USING 'password hash'; GRANT privileges TO `user`@`host` IDENTIFIED VIA mysql_old_password USING 'password hash';
Эти операторы не могут использовать проверку паролей — здесь нет чего проверять, исходный текстовый пароль недоступен. MariaDB вводит режим строгой проверки паролей — управляемый глобальной переменной сервера strict_password_validation. Если строгая проверка паролей включена и загружен хотя бы один плагин проверки паролей, эти «непроверяемые» пароли будут отклонены. В противном случае они будут приняты. По умолчанию строгая проверка паролей включена (но обратите внимание, что она не имеет эффекта, если не загружен ни один плагин проверки паролей).
Примеры
Неудачная проверка пароля:
GRANT SELECT ON *.* to foobar IDENTIFIED BY 'raboof'; ERROR HY000: Your password does not satisfy the current policy requirements SHOW WARNINGS; +---------+------+----------------------------------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------------------------------+ | Warning | 1819 | cracklib: it is based on your username | | Error | 1819 | Your password does not satisfy the current policy requirements | +---------+------+----------------------------------------------------------------+
Строгая проверка паролей:
GRANT SELECT ON *.* TO foo IDENTIFIED BY PASSWORD '2222222222222222'; ERROR HY000: The MariaDB server is running with the --strict-password-validation option so it cannot execute this statement
API плагина
API плагина проверки паролей очень простое. Плагин должен реализовать только один метод — validate_password(). Этот метод принимает два аргумента — имя пользователя и текстовый пароль. И возвращает 0, если пароль прошёл проверку, и 1 в противном случае,
См. также mysql/plugin_password_validation.h и плагины проверки паролей в plugin/simple_password_check/ и plugins/cracklib_password_check/.
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/password-validation/