Поиск по сайту:
Прекрасно только то, что естественно (Ф. Вольтер).

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

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

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

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

 

TL; DR

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

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

  • Предложение RETAIN CURRENT PASSWORD для операторов ALTER USER и SET PASSWORD сохраняет текущий пароль учетной записи в качестве вторичного пароля при назначении нового основного пароля.
  • Предложение DISCARD OLD PASSWORD для ALTER USER отбрасывает дополнительный пароль учетной записи, оставляя только основной пароль. Цель состоит в том, чтобы избежать простоев при смене паролей в реплицируемой среде.

 

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

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

  • На каждом сервере, который не является ведомым по репликации, установите новый пароль,
    например:

    ALTER USER ‘myApp’@’host’ IDENTIFIED BY ‘NEW_password’ RETAIN CURRENT PASSWORD;

     

  • Подождите, пока смена пароля не распространится по всей системе на все подчиненные серверы.
  • Измените каждое приложение, использующее учетную запись myApp, чтобы оно подключалось к серверам, используя пароль «NEW_password», а не «OLD_password».
  • На каждом сервере, который не является ведомым по репликации, сбросьте вторичный пароль,
    например:

    ALTER USER ‘myApp’@’host’ DISCARD OLD PASSWORD;

     

Давайте кратко рассмотрим использование 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 ).

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (1 оценок, среднее: 5,00 из 5)
Загрузка...
Поделиться в соц. сетях:


0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

**ссылки nofollow

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

Это может быть вам интересно


Рекомендуемое
Ruby является одним из самых популярных языков программирования на 2020…

Спасибо!

Теперь редакторы в курсе.