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 ソケットおよび共有メモリ接続には影響しない (これらはセキュアとみなされる)。有効化する前に TLS なしで接続しているクライアントを特定する。そうしないと、それらはエラー 3159 で失敗する。ALTER INSTANCE RELOAD TLS は既存の接続には影響せず、新しい接続にのみ適用される。証明書ファイルが無効な場合はエラーとなり、古い証明書が維持される。自動生成された自己署名証明書は、VERIFY_CA / VERIFY_IDENTITY を使用するクライアントでは検証できない。本番環境では自社 CA が署名した証明書を使用する。

DBAtlas で開く →

関連項目