ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

MySQL 8.0. Security – поддержка двух паролей

MySQL Security - Генерация случайного пароля

Размышляя о безопасности в установке MySQL, вы можете рассмотреть широкий спектр возможных процедур/рекомендаций и их влияние на безопасность вашего сервера MySQL и связанных приложений.

MySQL предоставляет множество инструментов/функции/плагин или компоненты для того , чтобы защитить ваши данные, включая некоторые дополнительные функции, такие как прозрачное шифрование данных (TDE),  аудит, маскирование данных и деидентификацию, межсетевой экран, отслеживание неудачного входа в систему и временная блокировка учетной записи, плагины контроля подключений, компонент проверки пароля и т. д…

 

TL; DR

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

MySQL реализует возможность двойного пароля с синтаксисом, который сохраняет и отбрасывает вторичные пароли:

 

Клиенты могут использовать старый пароль, пока новый пароль устанавливается в группе серверов, и удалить старый пароль только тогда, когда новый пароль установлен во всей группе.

Рабочий процесс:

Давайте кратко рассмотрим использование MySQL 8.0

MySQL SQL> SELECT VERSION();
+-----------+
| VERSION() |
+-----------+
|  8.0.19   |
+-----------+

 

Создайте учетную запись пользователя myApp@localhost с паролем pwd1 :

MySQL root SQL>
CREATE USER myApp@localhost IDENTIFIED BY 'pwd1';

 

Теперь мы можем связаться с именем и паролем:

$ mysql -u myApp -ppwd1 -e"SELECT USER()"
mysql: [Warning] Using a password on the command line interface can be insecure.
+-----------------+
|     USER()      |
+-----------------+
| myApp@localhost |
+-----------------+

 

 

Теперь администратор базы данных (суперпользователь) использует инструкцию ALTER USER с предложением RETAIN CURRENT PASSWORD для выполнения изменений учетных данных с использованием механизма двойного пароля путем добавления в качестве основного пароля pwd2.

Таким образом, pwd1 теперь является вторичным паролем:

MySQL root SQL>
ALTER USER myApp@localhost IDENTIFIED BY 'pwd2' RETAIN CURRENT PASSWORD;

 

Мы можем использовать имя пользователя и новый пароль ( pwd2 ) для подключения:

$ mysql -u myApp -ppwd2 -e"SELECT USER()"
mysql: [Warning] Using a password on the command line interface can be insecure.
+-----------------+
|     USER()      |
+-----------------+
| myApp@localhost |
+-----------------+

 

Но старый пароль ( pwd1 ) все еще действителен:

$ mysql -u myApp -ppwd1 -e"SELECT USER()"
mysql: [Warning] Using a password on the command line interface can be insecure.
+-----------------+
|     USER()      |
+-----------------+
| myApp@localhost |
+-----------------+

 

Теперь пришло время сбросить дополнительный пароль ( pwd1 ):

MySQL root SQL>
ALTER USER myApp@localhost DISCARD OLD PASSWORD;

 

$ mysql -u myApp -ppwd2 -e"SELECT USER()"
mysql: [Warning] Using a password on the command line interface can be insecure.
+-----------------+
|     USER()      |
+-----------------+
| myApp@localhost |
+-----------------+

$ mysql -u myApp -ppwd1 -e"SELECT USER()"
mysql: [Warning] Using a password on the command line interface can be insecure.
ERROR 1045 (28000): Access denied for user 'myApp'@'localhost' (using password: YES)

 

Как видите, действителен только новый пароль ( pwd2 ).

Exit mobile version