DBAtlas · Атлас эксплуатации баз данных

Обязательный TLS, поиск соединений без TLS, обновление сертификатов без перезапуска

MySQLБезопасность

Команда

SELECT @@require_secure_transport, @@tls_version, @@ssl_ca, @@ssl_cert;
SELECT * FROM performance_schema.tls_channel_status
WHERE PROPERTY IN ('Enabled', 'Current_tls_version', 'Current_tls_cert', 'Ssl_server_not_after');

-- Active connections and their TLS versions (empty = no TLS)
SELECT t.PROCESSLIST_USER AS user, t.PROCESSLIST_HOST AS host, t.CONNECTION_TYPE, sv.VARIABLE_VALUE AS tls_version
FROM performance_schema.threads t
LEFT JOIN performance_schema.status_by_thread sv ON sv.THREAD_ID = t.THREAD_ID AND sv.VARIABLE_NAME = 'Ssl_version'
WHERE t.TYPE = 'FOREGROUND' AND t.PROCESSLIST_USER IS NOT NULL;

SET PERSIST require_secure_transport = ON;
-- After copying the new certificate files
ALTER INSTANCE RELOAD TLS;

Что делает

Показывает конфигурацию TLS сервера, срок действия сертификата и использует ли каждое соединение TLS; полностью запрещает незашифрованные TCP-соединения и обновляет сертификаты без остановки сервера.

Когда использовать

Для аудитов безопасности / соответствия требованиям, до истечения срока сертификата и при поиске старых клиентов, подключающихся без шифрования.

Внимание

require_secure_transport=ON не влияет на соединения через Unix socket и shared memory; они считаются защищёнными. Перед включением найдите клиентов без TLS, иначе они получат ошибку 3159. ALTER INSTANCE RELOAD TLS не влияет на существующие соединения, только на новые; если файл сертификата некорректен, команда завершается ошибкой и сохраняет старый сертификат. Автоматически сгенерированный самоподписанный сертификат клиенты не могут проверить с VERIFY_CA / VERIFY_IDENTITY; на продакшене используйте сертификат, подписанный вашим CA.

Открыть в DBAtlas →

Связанные материалы