Spec-Zone.ru › MySQL 9.2

8.2.18 Многофакторная аутентификация

Аутентификация подразумевает установление идентичности одной стороны по удовлетворению второй стороны. Многофакторная аутентификация (MFA) — это использование нескольких аутентификационных значений (или “факторов”) во время процесса аутентификации. MFA обеспечивает большую безопасность, чем аутентификация с одним фактором/однофакторная аутентификация (1FA/SFA), которая использует только один метод аутентификации, например, пароль. MFA позволяет использовать дополнительные методы аутентификации, такие как аутентификация с использованием нескольких паролей или аутентификация с использованием устройств, таких как смарт-карты, ключи безопасности и биометрические считыватели.

MySQL поддерживает многофакторную аутентификацию. Эта возможность включает формы MFA, которые требуют до трёх аутентификационных значений. То есть управление учётными записями MySQL поддерживает учётные записи, использующие 2FA или 3FA, помимо существующей поддержки 1FA.

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

Для учётной записи с несколькими факторами аутентификации процесс аналогичен. Сервер вызывает плагины аутентификации в порядке, указанном в определении учётной записи. Если плагин сообщает об успехе, сервер либо принимает подключение, если это последний плагин, либо продолжает вызывать следующий плагин, если такие остаются. Если какой-либо плагин сообщает об ошибке, сервер отклоняет подключение.

Следующие разделы более подробно рассматривают многофакторную аутентификацию в MySQL.

  • Элементы поддержки многофакторной аутентификации

  • Настройка политики многофакторной аутентификации

  • Начало работы с многофакторной аутентификацией

Элементы поддержки многофакторной аутентификации

К факторам аутентификации обычно относятся такие типы информации:

  • Нечто, что вы знаете, например, секретный пароль или пароль-фразу.

  • Нечто, что у вас есть, например, ключ безопасности или смарт-карта.

  • Нечто, чем вы являетесь; то есть биометрическая характеристика, такая как отпечаток пальца или сканирование лица.

Тип фактора “нечто, что вы знаете” опирается на информацию, которая хранится в секрете с обеих сторон процесса аутентификации. К сожалению, секреты могут быть скомпрометированы: кто-то может увидеть, как вы вводите свой пароль, или обмануть вас с помощью фишинговой атаки, пароль, хранящийся на серверной стороне, может быть раскрыт при взломе безопасности и т. д. Безопасность можно повысить, используя несколько паролей, но каждый из них всё ещё может быть скомпрометирован. Использование других типов факторов обеспечивает улучшенную безопасность с меньшим риском компрометации.

Реализация многофакторной аутентификации в MySQL включает эти элементы:

  • Переменная системы authentication_policy управляет тем, сколько аутентификационных факторов может быть использовано, и типами аутентификации, разрешенными для каждого фактора. То есть она накладывает ограничения на инструкции CREATE USER и ALTER USER в отношении многофакторной аутентификации.

  • CREATE USER и ALTER USER имеют синтаксис, позволяющий указать несколько методов аутентификации для новых учётных записей и для добавления, изменения или удаления методов аутентификации для существующих учётных записей. Если учётная запись использует 2FA или 3FA, в таблице системы mysql.user информация об дополнительных факторах аутентификации хранится в столбце User_attributes.

  • Для включения аутентификации на сервере MySQL с использованием учётных записей, которые требуют нескольких паролей, клиентские программы имеют параметры --password1, --password2 и --password3, которые позволяют указать до трёх паролей. Для приложений, использующих API C, параметр MYSQL_OPT_USER_PASSWORD для функции API C обеспечивает ту же возможность.

  • Плагин серверной части authentication_webauthn позволяет выполнять аутентификацию с использованием устройств. Этот плагин серверной части, основанный на устройствах, включён только в дистрибутивах MySQL Enterprise Edition. Он не включён в дистрибутивы MySQL Community. Однако плагин клиентской части authentication_webauthn_client включён во всех дистрибутивах, включая Community. Это позволяет клиентам из любого дистрибутива подключаться к учётным записям, использующим authentication_webauthn для аутентификации на сервере, на котором этот плагин загружен. См. Раздел 8.4.1.11, «WebAuthn Pluggable Authentication».

  • authentication_webauthn также позволяет выполнять аутентификацию без пароля, если это единственный плагин аутентификации, используемый учётной записью. См. Беспарольную аутентификацию WebAuthn.

  • Многофакторная аутентификация может использовать методы аутентификации MySQL, отличные от WebAuthn, метод аутентификации WebAuthn или их комбинацию.

  • Эти привилегии позволяют пользователям выполнять определённые ограниченные операции, связанные с многофакторной аутентификацией:

    • Пользователь, имеющий привилегию AUTHENTICATION_POLICY_ADMIN, не подчиняется ограничениям, налагаемым переменной системы authentication_policy. (Выводится предупреждение для инструкций, которые в противном случае не были бы разрешены.)

    • Привилегия PASSWORDLESS_USER_ADMIN позволяет создавать учётные записи с аутентификацией без пароля и копировать операции с ними.

Настройка политики многофакторной аутентификации

Переменная системы authentication_policy определяет политику многофакторной аутентификации. В частности, она определяет, сколько факторов аутентификации может иметь (или должно иметь) учетная запись и какие методы аутентификации могут использоваться для каждого фактора.

Значение authentication_policy представляет собой список из 1, 2 или 3 элементов, разделенных запятыми. Каждый элемент списка соответствует фактору аутентификации и может быть именем плагина аутентификации, звездочкой (*), пустым или отсутствовать. (Исключение: элемент 1 не может быть пустым или отсутствовать.) Весь список заключен в одинарные кавычки. Например, следующее значение authentication_policy включает звездочку, имя плагина аутентификации и пустой элемент:

authentication_policy = '*,authentication_webauthn,'

Звездочка (*) указывает, что метод аутентификации требуется, но разрешен любой метод. Пустой элемент указывает, что метод аутентификации является необязательным и разрешен любой метод. Отсутствие элемента (без звездочки, пустого элемента или имени плагина) означает, что метод аутентификации не разрешен. Если указано имя плагина, этот метод аутентификации требуется для соответствующего фактора при создании или изменении учетной записи.

Значение по умолчанию authentication_policy равно '*,,' (звездочка и два пустых элемента), что требует первого фактора и необязательно разрешает второй и третий факторы. Таким образом, значение по умолчанию authentication_policy совместимо со старыми учетными записями с 1FA, но также позволяет создавать или изменять учетные записи для использования 2FA или 3FA.

Пользователь, обладающий привилегией AUTHENTICATION_POLICY_ADMIN, не подчиняется ограничениям, налагаемым параметром authentication_policy. (Выводится предупреждение для утверждений, которые в противном случае не были бы разрешены.)

Значения authentication_policy могут быть определены в файле параметров или указаны с помощью оператора SET GLOBAL:

SET GLOBAL authentication_policy='*,*,';

Существует несколько правил, определяющих, как можно определить значение authentication_policy. Подробное описание этих правил см. в описании переменной системы authentication_policy. В следующей таблице приведены несколько примеров значений authentication_policy и соответствующие политики.

Таблица 8.11 Примеры значений authentication_policy

Таблица 8.11 Примеры значений authentication_policy
Значение authentication_policy Эффективная политика
'*' Разрешить создание или изменение учетных записей только с одним фактором.
'*,*' Разрешить создание или изменение учетных записей только с двумя факторами.
'*,*,*' Разрешить создание или изменение учетных записей только с тремя факторами.
'*,' Разрешить создание или изменение учетных записей с одним или двумя факторами.
'*,,' Разрешить создание или изменение учетных записей с одним, двумя или тремя факторами.
'*,*,' Разрешить создание или изменение учетных записей с двумя или тремя факторами.
'*,auth_plugin' Разрешить создание или изменение учетных записей с двумя факторами, где первый фактор может быть любым методом аутентификации, а второй фактор должен быть указанным плагином.
'auth_plugin,*,' Разрешить создание или изменение учетных записей с двумя или тремя факторами, где первый фактор должен быть указанным плагином.
'auth_plugin,' Разрешить создание или изменение учетных записей с одним или двумя факторами, где первый фактор должен быть указанным плагином.
'auth_plugin,auth_plugin,auth_plugin' Разрешить создание или изменение учетных записей с тремя факторами, где факторы должны использовать указанные плагины.

Начало работы с многофакторной аутентификацией

По умолчанию MySQL использует политику многофакторной аутентификации, которая разрешает любой плагин аутентификации для первого фактора и необязательно разрешает второй и третий факторы аутентификации. Эта политика настраивается; подробнее см. Настройка политики многофакторной аутентификации.

Примечание

Не разрешается использовать плагины для хранения внутренних учетных данных (такие как caching_sha2_password) для фактора 2 или 3.

Предположим, что вы хотите, чтобы учетная запись сначала прошла аутентификацию с помощью плагина caching_sha2_password, а затем с помощью плагина SASL LDAP authentication_ldap_sasl. (Это предполагает, что аутентификация LDAP уже настроена, как описано в разделе 8.4.1.6, «LDAP Pluggable Authentication», и что у пользователя есть запись в каталоге LDAP, соответствующая строке аутентификации, показанной в примере.) Создайте учетную запись с помощью оператора подобного этому:

CREATE USER 'alice'@'localhost'
  IDENTIFIED WITH caching_sha2_password
    BY 'sha2_password'
  AND IDENTIFIED WITH authentication_ldap_sasl
    AS 'uid=u1_ldap,ou=People,dc=example,dc=com';

Для подключения пользователю необходимо предоставить два пароля. Чтобы включить аутентификацию на сервер MySQL с использованием учетных записей, требующих нескольких паролей, клиентские программы имеют опции --password1, --password2 и --password3, которые позволяют указать до трех паролей. Эти опции аналогичны опции --password в том, что они могут принимать значение пароля после опции в командной строке (что небезопасно), или, если указаны без значения пароля, запрашивают у пользователя пароль. Для только что созданной учетной записи факторы 1 и 2 принимают пароли, поэтому запустите клиент mysql с опциями --password1 и --password2. Клиент mysql запрашивает каждый пароль по очереди:

$> mysql --user=alice --password1 --password2
Enter password: (enter factor 1 password)
Enter password: (enter factor 2 password)

Предположим, вы хотите добавить третий фактор аутентификации. Это можно сделать, удалив и пересоздав пользователя с третьим фактором или используя синтаксис ALTER USER user ADD factor. Оба метода показаны ниже:

DROP USER 'alice'@'localhost';

CREATE USER 'alice'@'localhost'
  IDENTIFIED WITH caching_sha2_password
    BY 'sha2_password'
  AND IDENTIFIED WITH authentication_ldap_sasl
    AS 'uid=u1_ldap,ou=People,dc=example,dc=com'
  AND IDENTIFIED WITH authentication_webauthn;

Синтаксис ADD factor включает номер фактора и ключевое слово FACTOR:

ALTER USER 'alice'@'localhost' ADD 3 FACTOR IDENTIFIED WITH authentication_webauthn;

Синтаксис ALTER USER user DROP factor позволяет удалить фактор. В следующем примере удаляется третий фактор (authentication_webauthn), который был добавлен в предыдущем примере:

ALTER USER 'alice'@'localhost' DROP 3 FACTOR;

Синтаксис ALTER USER user MODIFY factor позволяет изменить плагин или строку аутентификации для конкретного фактора, при условии, что фактор существует. В следующем примере изменяется второй фактор, изменяя метод аутентификации с authentication_ldap_sasl на authetication_webauthn:

ALTER USER 'alice'@'localhost' MODIFY 2 FACTOR IDENTIFIED WITH authentication_webauthn;

Используйте SHOW CREATE USER для просмотра методов аутентификации, определенных для учетной записи:

SHOW CREATE USER 'u1'@'localhost'\G
*************************** 1. row ***************************
CREATE USER for u1@localhost: CREATE USER `u1`@`localhost`
IDENTIFIED WITH 'caching_sha2_password' AS 'sha2_password'
AND IDENTIFIED WITH 'authentication_authn' REQUIRE NONE
PASSWORD EXPIRE DEFAULT ACCOUNT UNLOCK PASSWORD HISTORY
DEFAULT PASSWORD REUSE INTERVAL DEFAULT PASSWORD REQUIRE
CURRENT DEFAULT

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-9.2-en/multifactor-authentication.html

Spec-Zone.ru

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