Spec-Zone.ru › MySQL 8.4

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

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

A.9.1.

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

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

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

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

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

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

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

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

  • Раздел 8.1.6, «Рекомендации по безопасности для LOAD DATA LOCAL».

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

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

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

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

A.9.2.

Какой механизм аутентификации по умолчанию используется в MySQL 8.4?

По умолчанию, начиная с MySQL 8.0, используется caching_sha2_password. Подробнее об этом механизме можно узнать в Разделе 8.4.1.2, «Caching SHA-2 Pluggable Authentication».

Механизм caching_sha2_password обеспечивает более безопасное шифрование паролей, чем устаревший механизм mysql_native_password (по умолчанию в версиях MySQL до MySQL 8.0). Информацию о последствиях этой смены механизма по умолчанию для работы сервера и совместимости сервера с клиентами и коннекторами можно найти .

Дополнительную информацию об аутентификации с подключаемыми модулями и других доступных механизмах аутентификации см. в Разделе 8.2.17, «Подключаемые модули аутентификации» и Разделе 8.4.1, «Подключаемые модули аутентификации».

A.9.3.

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

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

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

A.9.4.

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

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

A.9.5.

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

Издание Enterprise включает плагин аутентификации 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. Последствия удаления см. в статье об удалении поддержки TLSv1 и TLSv1.1.

Поддержка 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 году сервер перешел на OpenSSL для MySQL 5.6, 5.7 и 8.0. Для MySQL Enterprise Edition поддержка TLS 1.2 была добавлена в 2015 году в MySQL Server 5.7.10 с OpenSSL.

Как можно просмотреть используемые версии 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-8.4-en/faqs-security.html

Spec-Zone.ru

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