Spec-Zone.ru › MySQL 5.7

A.9 MySQL 5.7 FAQ: Безопасность

A.9.1. Где можно найти документацию, посвященную вопросам безопасности MySQL?
A.9.2. Какой плагин аутентификации по умолчанию используется в MySQL 5.7?
A.9.3. Поддерживает ли MySQL нативное шифрование SSL?
A.9.4. Поддержка SSL включена в двоичные файлы MySQL или мне нужно перекомпилировать их самостоятельно?
A.9.5. Поддерживает ли MySQL встроенную аутентификацию по каталогам LDAP?
A.9.6. Поддерживает ли MySQL встроенный контроль доступа на основе ролей (RBAC)?
A.9.7. Поддерживает ли MySQL протоколы TLS 1.0 и 1.1?

A.9.1.

Где можно найти документацию по вопросам безопасности MySQL?

Лучше всего начать с Главы 6, Безопасность.

Другие разделы документации MySQL, которые могут быть полезны в отношении конкретных проблем безопасности, включают:

  • Раздел 6.1.1, «Рекомендации по безопасности».

  • Раздел 6.1.3, «Обеспечение безопасности MySQL от атак».

  • Раздел B.3.3.2, «Как сбросить пароль root».

  • Раздел 6.1.5, «Как запустить MySQL как обычный пользователь».

  • Раздел 6.1.4, «Параметры и переменные mysqld, связанные с безопасностью».

  • Раздел 6.1.6, «Учетные соображения безопасности для LOAD DATA LOCAL».

  • Раздел 2.9, «Настройка и тестирование после установки».

  • Раздел 6.3, «Использование шифрованных соединений».

  • Меры предосторожности в отношении безопасности загружаемых функций.

Также имеется Руководство по защищенному развертыванию, которое содержит процедуры для развертывания общей двоичной дистрибуции MySQL Enterprise Edition Server с возможностями управления безопасностью вашей установки MySQL.

A.9.2.

Какая подключаемая модуль аутентификации по умолчанию в MySQL 5.7?

Подключаемый модуль аутентификации по умолчанию в MySQL 5.7 — mysql_native_password. Дополнительную информацию об этом модуле см. в Разделе 6.4.1.1, «Подключаемая аутентификация по умолчанию». Общую информацию о подключаемой аутентификации и других доступных подключаемых модулях аутентификации см. в Разделе 6.2.13, «Подключаемая аутентификация» и Разделе 6.4.1, «Подключаемые модули аутентификации».

A.9.3.

Поддерживает ли MySQL SSL по умолчанию?

Да, двоичные файлы поддерживают SSL-соединения между клиентом и сервером. См. Раздел 6.3, «Использование шифрованных соединений».

Также вы можете использовать туннель с помощью SSH, если (например), приложение-клиент не поддерживает SSL-соединения. Пример см. в Разделе 6.3.5, «Подключение к удалённому MySQL из Windows с использованием SSH».

A.9.4.

Поддержка SSL включена в двоичные файлы MySQL, или мне нужно перекомпилировать двоичные файлы, чтобы её включить?

Да, в двоичных файлах поддержка SSL включена для защищенных, аутентифицированных или обоих типов клиентских/серверных соединений. См. Раздел 6.3, «Использование шифрованных соединений».

A.9.5.

Поддерживает ли MySQL аутентификацию на основе LDAP-каталогов?

В Enterprise Edition имеется подключаемый модуль аутентификации PAM, который поддерживает аутентификацию на основе LDAP-каталога.

A.9.6.

Поддерживает ли MySQL контроль доступа на основе ролей (RBAC)?

Пока нет.

A.9.7.

Поддерживает ли MySQL TLS 1.0 и 1.1?

Поддержка протоколов подключения TLSv1 и TLSv1.1 была удалена начиная с MySQL 8.0.28. Протоколы были устаревшими с MySQL 8.0.26. Последствия удаления описаны в Устаревшие протоколы TLS.

Поддержка TLS 1.0 и 1.1 была удалена, поскольку эти версии протоколов являются устаревшими, выпущенными в 1996 и 2006 годах соответственно. Используемые алгоритмы слабые и устаревшие.

Если вы не используете очень старые версии MySQL Server или коннекторов, у вас вряд ли будут подключения с использованием TLS 1.0 или 1.1. MySQL коннекторы и клиенты по умолчанию выбирают самую высокую доступную версию TLS.

Когда поддержка TLS 1.2 была добавлена в MySQL Server? MySQL Community Server добавила поддержку TLS 1.2, когда в 2019 году community сервер перешел на OpenSSL для MySQL 5.6, 5.7 и 8.0. Для MySQL Enterprise Edition OpenSSL добавила поддержку TLS 1.2 в 2015 году, в MySQL Server 5.7.10.

Как можно просмотреть используемые версии TLS? Для MySQL 5.7 или 8.0, проверьте, используются ли TLS 1.0 или 1.1, выполнив эту команду:

SELECT
  `session_ssl_status`.`thread_id`, `session_ssl_status`.`ssl_version`,
  `session_ssl_status`.`ssl_cipher`, `session_ssl_status`.`ssl_sessions_reused`
FROM `sys`.`session_ssl_status`
WHERE ssl_version NOT IN ('TLSv1.3','TLSv1.2');

Если в списке присутствуют потоки, использующие TLSv1.0 или TLSv1.1, вы можете определить источник этого подключения, выполнив эту команду:

SELECT thd_id,conn_id, user, db, current_statement, program_name
FROM sys.processlist
WHERE thd_id IN (
                  SELECT `session_ssl_status`.`thread_id`
                  FROM `sys`.`session_ssl_status`
                  WHERE ssl_version NOT IN ('TLSv1.3','TLSv1.2')
                );

В качестве альтернативы, вы можете выполнить эту команду:

SELECT *
FROM sys.session
WHERE thd_id IN (
                  SELECT `session_ssl_status`.`thread_id`
                  FROM `sys`.`session_ssl_status`
                  WHERE ssl_version NOT IN ('TLSv1.3','TLSv1.2')
                );

Эти запросы предоставляют необходимые данные для определения приложения, которое не поддерживает TLS 1.2 или 1.3, и для определения целей апгрейдов.

Существуют ли другие варианты проверки TLS 1.0 или 1.1? Да, вы можете отключить эти версии перед обновлением сервера до новой версии. Явно укажите используемую версию, либо в mysql.cnf (или mysql.ini), либо с помощью SET PERSIST, например: --tls-version=TLSv12.

Все MySQL Connectors (5.7 и 8.0) поддерживают TLS 1.2 и выше? А как насчет приложений на C и C++ использующих libmysql? Для приложений на C и C++ использующих общедоступную libmysqlclient библиотеку, используйте библиотеку на основе OpenSSL (то есть, не используйте YaSSL). Использование OpenSSL было унифицировано в 2018 году (в MySQL 8.0.4 и 5.7.28 соответственно). То же самое касается Connector/ODBC и Connector/C++. Чтобы определить используемые библиотечные зависимости, выполните следующие команды, чтобы увидеть, указан ли OpenSSL. В Linux используйте эту команду:

$> sudo ldd usr/local/mysql/lib/libmysqlclient.a | grep -i openssl

В MacOS используйте эту команду:

$> sudo otool -l /usr/local/mysql/lib/libmysqlclient.a | grep -i openssl

Проверьте документацию для каждого коннектора, но они поддерживают TLS 1.2 и TLS 1.3.

© 2025 Oracle
Licensed under the GPLv2 License.
https://docs.oracle.com/cd/E17952_01/mysql-5.7-en/faqs-security.html

Spec-Zone.ru

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