Spec-Zone.ru › MySQL 8.4

8.4.3 Компонент проверки паролей

  • 8.4.3.1 Установка и удаление компонента проверки паролей
  • 8.4.3.2 Параметры и переменные проверки паролей
  • 8.4.3.3 Переход к компоненту проверки паролей

Компонент validate_password служит для повышения безопасности, требуя пароли учетных записей и обеспечивая проверку сложности потенциальных паролей. Этот компонент предоставляет системные переменные, которые позволяют настроить политику паролей, и переменные состояния для мониторинга компонента.

Компонент validate_password реализует следующие возможности:

  • Для SQL-запросов, присваивающих пароль в виде открытого текста, validate_password проверяет пароль по текущей политике паролей и отклоняет его, если он слабый (запрос возвращает ошибку). Это относится к запросам ALTER USER, CREATE USER и SET PASSWORD.

  • Для запросов CREATE USER, validate_password требует, чтобы был указан пароль, соответствующий политике паролей. Это справедливо даже если учетная запись изначально заблокирована, поскольку в противном случае разблокировка учетной записи позже сделает её доступной без пароля, соответствующего политике.

  • validate_password реализует SQL-функцию VALIDATE_PASSWORD_STRENGTH(), которая оценивает сложность потенциальных паролей. Эта функция принимает аргумент пароля и возвращает целое число от 0 (слабый) до 100 (сильный).

Примечание

Для запросов, присваивающих или изменяющих пароли учетных записей (ALTER USER, CREATE USER и SET PASSWORD), возможности validate_password, описанные здесь, применяются только к учетным записям, использующим плагин аутентификации, который хранит учетные данные внутри MySQL. Для учетных записей, использующих плагины, которые выполняют аутентификацию по системе учетных данных, внешней по отношению к MySQL, управление паролями должно выполняться также внешне по отношению к этой системе. Более подробную информацию о хранении внутренних учетных данных см. в Разделе 8.2.15, «Управление паролями».

Указанное выше ограничение не применяется к использованию функции 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_password
           AS '*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.xxx; это параметры, которые контролируют политику паролей. См. Раздел 8.4.3.2, «Параметры и переменные проверки паролей».

Если validate_password не установлен, системные переменные validate_password.xxx недоступны, пароли в запросах не проверяются, и функция VALIDATE_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.

Кроме того, validate_password поддерживает возможность отклонять пароли, совпадающие с частью имени пользователя эффективной учетной записи для текущей сессии, как в прямом, так и в обратном порядке. Для управления этой возможностью, validate_password предоставляет системную переменную validate_password.check_user_name, которая включена по умолчанию.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-8.4-en/validate-password.html

Spec-Zone.ru

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