8.8 Поддержка FIPS
MySQL поддерживает режим FIPS, когда на системе-хосте доступна поддерживаемая библиотека OpenSSL и модуль FIPS Object Module.
Режим FIPS на стороне сервера применяется к криптографическим операциям, выполняемым сервером. Это включает репликацию (источник/реплика и Group Replication) и плагин X, работающие внутри сервера. Режим FIPS также применяется к попыткам клиентов подключиться к серверу.
В следующих разделах описан режим FIPS и как им воспользоваться в MySQL:
Обзор FIPS
Федеральные стандарты обработки информации 140-2 (FIPS 140-2) описывают стандарт безопасности, который может потребоваться федеральным (правительство США) агентствам для криптографических модулей, используемых для защиты конфиденциальной или ценной информации. Чтобы считаться приемлемым для такого федерального использования, криптографический модуль должен быть сертифицирован для FIPS 140-2. Если система, предназначенная для защиты конфиденциальных данных, не имеет соответствующего сертификата FIPS 140-2, федеральные агентства не могут ее приобрести.
Продукты, такие как OpenSSL, могут использоваться в режиме FIPS, хотя сама библиотека OpenSSL не валидирована для FIPS. Вместо этого библиотека OpenSSL используется с модулем OpenSSL FIPS Object Module для того, чтобы приложения, основанные на OpenSSL, могли работать в режиме FIPS.
Для получения общей информации о FIPS и его реализации в OpenSSL могут быть полезны следующие ссылки:
Режим FIPS накладывает условия на криптографические операции, такие как ограничения на приемлемые алгоритмы шифрования или требования к большей длине ключей. Для OpenSSL точное поведение режима FIPS зависит от версии OpenSSL.
Требования к системе для режима FIPS в MySQL
Для поддержки режима FIPS в MySQL должны быть выполнены следующие требования к системе:
-
MySQL должен быть скомпилирован с версией OpenSSL, сертифицированной для использования с FIPS. Сертифицированы OpenSSL 1.0.2 и OpenSSL 3.0, но OpenSSL 1.1.1 — нет. Бинарные дистрибутивы последних версий MySQL на некоторых платформах скомпилированы с использованием OpenSSL 3.0, что означает, что они не сертифицированы для FIPS. Это означает, что у вас есть следующие варианты в зависимости от системы и конфигурации MySQL:
-
Используйте систему с OpenSSL 3.0 и необходимым модулем FIPS object module. В этом случае вы можете включить режим FIPS для MySQL, если используете бинарный дистрибутив, скомпилированный с использованием OpenSSL 3.0, или скомпилируете MySQL из исходного кода с использованием OpenSSL 3.0.
Для получения общей информации об обновлении до OpenSSL 3.0 см. Руководство по миграции OpenSSL 3.0.
Используйте систему с OpenSSL 1.1.1 или выше. В этом случае вы можете установить MySQL с помощью бинарных пакетов и использовать протокол TLS v1.3 и наборы шифров, помимо уже поддерживаемых протоколов TLS. Однако вы не можете включить режим FIPS для MySQL.
Используйте систему с OpenSSL 1.0.2 и необходимым модулем FIPS Object Module. В этом случае вы можете включить режим FIPS для MySQL, если используете бинарный дистрибутив, скомпилированный с использованием OpenSSL 1.0.2, или скомпилируете MySQL из исходного кода с использованием OpenSSL 1.0.2. В этом случае вы не можете использовать протокол TLS v1.3 или наборы шифров, которые требуют OpenSSL 1.1.1 или 3.0. Кроме того, следует помнить, что OpenSSL 1.0.2 достиг статуса окончания жизненного цикла в 2019 году, а все операционные платформы, использующие OpenSSL 1.1.1, достигнут окончания жизненного цикла в 2024 году.
-
Во время выполнения библиотека OpenSSL и модуль FIPS Object Module OpenSSL должны быть доступны как общие (динамически связанные) объекты.
Включение режима FIPS в MySQL
Чтобы определить, работает ли MySQL на системе с включенным режимом FIPS, проверьте значение системной переменной сервера ssl_fips_mode с помощью оператора SQL, например, SHOW VARIABLES
LIKE '%fips%' или SELECT
@@ssl_fips_mode. Если значение этой переменной равно 1 (ON) или 2 (STRICT), режим FIPS включён для OpenSSL; если оно равно 0 (OFF), режим FIPS недоступен.
В общем случае STRICT накладывает больше ограничений, чем ON, но сам MySQL не имеет кода, специфичного для FIPS, кроме указания значения режима FIPS для OpenSSL. Точное поведение режима FIPS для ON или STRICT зависит от версии OpenSSL. Для подробностей см. справочную страницу fips_module (см. Обзор FIPS).
Режим FIPS на стороне сервера применяется к криптографическим операциям, выполняемым сервером, включая те, что выполняются MySQL Replication (включая Group Replication) и плагином X, работающими внутри сервера.
Режим FIPS также применяется к попыткам клиентов подключиться к серверу. При включении на стороне клиента или сервера он ограничивает выбор поддерживаемых шифров шифрования. Однако включение режима FIPS не требует использования зашифрованного соединения или шифрования учетных данных пользователя. Например, если режим FIPS включен, требуются более сильные криптографические алгоритмы. В частности, MD5 ограничен, поэтому попытка установить зашифрованное соединение с использованием шифра шифрования, такого как RC4-MD5, не работает. Но в режиме FIPS нет ничего, что препятствует установлению незашифрованного соединения. (Для этого можно использовать условие REQUIRE для CREATE USER или ALTER USER для конкретных учетных записей пользователей или установить системную переменную require_secure_transport, чтобы повлиять на все учетные записи.)
Если режим FIPS требуется, рекомендуется использовать операционные платформы, которые его включают; если это так, вы можете (и должны) использовать его. Если ваша платформа не включает FIPS, у вас есть два варианта:
Перейти на платформу с поддержкой FIPS OpenSSL.
Скомпилировать библиотеку OpenSSL и модуль FIPS object module из исходного кода, следуя инструкциям из справочной страницы
fips_module(см. Обзор FIPS).
Если модуль OpenSSL FIPS Object Module недоступен, единственное разрешенное значение для ssl_fips_mode и --ssl-fips-mode — OFF. При попытке установить режим FIPS в другое значение возникает ошибка.
Если режим FIPS требуется, рекомендуется использовать операционную платформу, которая его включает; если это так, вы можете (и должны) использовать его. Если ваша платформа не включает FIPS, у вас есть два варианта:
Перейти на платформу с поддержкой FIPS OpenSSL.
Скомпилировать библиотеку OpenSSL и модуль FIPS object module из исходного кода, следуя инструкциям из справочной страницы
fips_module(см. Обзор FIPS).
© 2025 Oracle
Licensed under the GPLv2 License.