6.4.3 Плагин проверки паролей
Плагин validate_password служит для повышения безопасности, требуя пароли учетных записей и позволяя проверять силу потенциальных паролей. Данный плагин предоставляет набор системных переменных, которые позволяют вам настроить политику паролей.
Плагин validate_password реализует следующие возможности:
Для SQL-запросов, присваивающих пароль в виде открытого текста,
validate_passwordпроверяет пароль по текущей политике паролей и отклоняет его, если он слабый (запрос возвращает ошибку). Это относится к операторамALTER USER,CREATE USER,GRANTиSET PASSWORD, а также паролям, переданным в качестве аргументов функцииPASSWORD().Для операторов
CREATE USER,validate_passwordтребует указания пароля, который соответствует политике паролей. Это справедливо даже если учетная запись изначально заблокирована, так как в противном случае разблокировка учетной записи может привести к её доступности без пароля, соответствующего политике.validate_passwordреализует SQL-функциюVALIDATE_PASSWORD_STRENGTH(), которая оценивает силу потенциальных паролей. Эта функция принимает пароль в качестве аргумента и возвращает целое число от 0 (слабый) до 100 (сильный).
Для операторов, присваивающих, изменяющих или генерирующих пароли учетных записей (ALTER USER, CREATE USER, GRANT и SET PASSWORD; операторы, использующие PASSWORD()), описанные здесь возможности validate_password применяются только к учетным записям, использующим плагин аутентификации, который хранит учетные данные внутри MySQL. Для учетных записей, использующих плагины, которые выполняют аутентификацию по системе учетных данных, внешней по отношению к MySQL, управление паролями также должно выполняться внешне по отношению к этой системе. Дополнительную информацию о хранении внутренних учетных данных см. в Разделе 6.2.11, «Управление паролями».
Предыдущее ограничение не относится к использованию функции VALIDATE_PASSWORD_STRENGTH(), поскольку она не влияет непосредственно на учетные записи.
Примеры:
-
validate_passwordпроверяет пароль в открытом тексте в следующем операторе. Согласно стандартной политике паролей, требующей паролей длиной не менее 8 символов, пароль слабый, и оператор генерирует ошибку:mysql>
ALTER USER USER() IDENTIFIED BY 'abc';ERROR 1819 (HY000): Your password does not satisfy the current policy requirements -
Пароли, заданные в виде хэшированных значений, не проверяются, поскольку исходное значение пароля недоступно для проверки:
mysql>
ALTER USER 'jeffrey'@'localhost'IDENTIFIED WITH mysql_native_passwordAS '*0D3CED9BEC10A777AEC23CCC353A8C08A633045E';Query OK, 0 rows affected (0.01 sec) -
Данный оператор создания учетной записи завершается неудачей, даже если учетная запись изначально заблокирована, поскольку он не включает пароль, соответствующий текущей политике паролей:
mysql>
CREATE USER 'juanita'@'localhost' ACCOUNT LOCK;ERROR 1819 (HY000): Your password does not satisfy the current policy requirements -
Для проверки пароля используйте функцию
VALIDATE_PASSWORD_STRENGTH():mysql>
SELECT VALIDATE_PASSWORD_STRENGTH('weak');+------------------------------------+ | VALIDATE_PASSWORD_STRENGTH('weak') | +------------------------------------+ | 25 | +------------------------------------+ mysql>SELECT VALIDATE_PASSWORD_STRENGTH('lessweak$_@123');+----------------------------------------------+ | VALIDATE_PASSWORD_STRENGTH('lessweak$_@123') | +----------------------------------------------+ | 50 | +----------------------------------------------+ mysql>SELECT VALIDATE_PASSWORD_STRENGTH('N0Tweak$_@123!');+----------------------------------------------+ | VALIDATE_PASSWORD_STRENGTH('N0Tweak$_@123!') | +----------------------------------------------+ | 100 | +----------------------------------------------+
Для настройки проверки паролей измените системные переменные с именами вида validate_password_; эти параметры управляют политикой паролей. См. Раздел 6.4.3.2, «Параметры и переменные плагина проверки паролей».xxx
Если плагин validate_password не установлен, системные переменные validate_password_ недоступны, пароли в операторах не проверяются, и функция xxxVALIDATE_PASSWORD_STRENGTH() всегда возвращает 0. Например, без установленного плагина учетным записям можно присвоить пароли короче 8 символов или без пароля вообще.
Предполагая, что плагин validate_password установлен, он реализует три уровня проверки паролей: LOW, MEDIUM и STRONG. По умолчанию используется уровень MEDIUM; для изменения этого значения измените значение validate_password_policy. Политики реализуют всё более жёсткие тесты паролей. В следующих описаниях используются значения параметров по умолчанию, которые можно изменить, изменив соответствующие системные переменные.
Политика
LOWпроверяет только длину пароля. Пароли должны быть не короче 8 символов. Для изменения этой длины изменитеvalidate_password_length.Политика
MEDIUMдобавляет условия, что пароли должны содержать по крайней мере 1 цифру, 1 строчную букву, 1 заглавную букву и 1 специальный (не буквенно-цифровой) символ. Для изменения этих значений изменитеvalidate_password_number_count,validate_password_mixed_case_countиvalidate_password_special_char_count.Политика
STRONGдобавляет условие, что подстроки пароля длиной 4 или более символов не должны совпадать со словами в файле словаря, если он указан. Для указания файла словаря изменитеvalidate_password_dictionary_file.
Кроме того, начиная с MySQL 5.7.15, validate_password поддерживает возможность отклонения паролей, совпадающих с частью имени пользователя эффективной учетной записи для текущего сеанса, как прямо, так и в обратном порядке. Для управления этой возможностью validate_password предоставляет системную переменную validate_password_check_user_name, которая включена по умолчанию.
© 2025 Oracle
Licensed under the GPLv2 License.