tencent cloud

文档反馈

MySQL 加密审计实践教程

最后更新时间:2024-10-16 16:43:53

    应用场景

    数据安全审计自6.0.2版本起,已支持自建 MySQL、MariaDB 的 SSL 加密审计。本文档对该功能的限制、配置、常见问题做必要说明。

    功能限制

    本功能限制如下:
    仅支持自建的 MySQL、MariaDB;云数据库 MySQL 通过云原生审计方式可支持加密审计,无需单独配置。
    支持的加密算法:TLS_RSA_WITH_AES_128_CBC_SHA 、TLS_RSA_WITH_AES_256_CBC_SHA 、TLS_RSA_WITH_AES_128_CBC_SHA256、 TLS_RSA_WITH_AES_256_CBC_SHA256。

    检测方式

    步骤1:检测是否开启加密

    1. 在数据库中,输入如下命令,确认是否开启了 SSL 加密。
    show global variables like '%ssl%';
    2. 若 have_ssl 的值为 YES,则表明已经开启了 SSL,需要关闭 SSL 后才能审计到。
    dba:(none)> show global variables like '%ssl%';
    +---------------+-----------------+
    | Variable_name | Value |
    +---------------+-----------------+
    | have_openssl | YES |
    | have_ssl | YES | #已经开启了SSL
    | ssl_ca | ca.pem |
    | ssl_capath | |
    | ssl_cert | server-cert.pem |
    | ssl_cipher | |
    | ssl_crl | |
    | ssl_crlpath | |
    | ssl_key | server-key.pem |
    +---------------+-----------------+

    步骤2:检测加密算法

    1. 在数据库中,输入如下命令,检测加密算法。
    show global variables like 'ssl_cipher';
    2. 若 ssl_cipher 的值中只包含 AES128-SHA、AES256-SHA、AES128-SHA256、AES256-SHA256 四个中的一个或多个,则表示是支持的,否则表示不支持,需要进行修改。
    dba:(none)> show global variables like 'ssl_cipher';
    +---------------+-----------------+
    | Variable_name | Value |
    +---------------+-----------------+
    | ssl_cipher | | #此处为空,需要修改
    +---------------+-----------------+

    修改方式

    通过修改数据库的相关配置,使数据安全审计可以审计到数据库语句。可根据实际情况,任意选择如下一种修改方式。

    关闭 SSL 加密

    MySQL 的 SSL 虽然提高了安全性,但也牺牲了部分性能。如果用户单位没有必须开启 SSL 加密的规定,可以考虑直接关闭 SSL 加密。
    注意:
    该方法需要重启数据库。
    1. 修改配置文件 my.cnf,在[mysqld]下增加如下内容:
    [mysqld]
    # disable_ssl
    skip_ssl
    2. 输入如下指令,重启 MySQL。
    service mysqld restart
    3. 使用上述 检测方式,验证是否修改成功。
    dba:(none)> show global variables like '%ssl%';
    +---------------+-----------------+
    | Variable_name | Value |
    +---------------+-----------------+
    | have_openssl | DISABLED |
    | have_ssl | DISABLED | #已经关闭了SSL
    | ssl_ca | ca.pem |
    | ssl_capath | |
    | ssl_cert | server-cert.pem |
    | ssl_cipher | |
    | ssl_crl | |
    | ssl_crlpath | |
    | ssl_key | server-key.pem |
    +---------------+-----------------+

    设置加密算法

    在配置文件中,设置加密算法,该方法可以对数据库的所有连接生效。
    注意:
    该方法需要重启数据库。
    1. 修改配置文件 my.cnf,在[mysqld]下增加如下内容:
    [mysqld]
    # 设置加密算法
    ssl_cipher="AES128-SHA:AES256-SHA:AES128-SHA256:AES256-SHA256"
    2. 输入如下指令,重启 MySQL。
    service mysqld restart
    3. 使用上述 检测方式,验证是否修改成功。
    dba:(none)> show global variables like 'ssl_cipher';
    +---------------+--------------------------------------------------+
    | Variable_name | Value |
    +---------------+--------------------------------------------------+
    | ssl_cipher | AES128-SHA:AES256-SHA:AES128-SHA256:AES256-SHA256|
    +---------------+--------------------------------------------------+

    在客户端连接时指定参数

    若不想修改数据库配置,可以在客户端建立连接时,指定参数,如:
    mysql -u root -pxxxx -h10.3.1.17 --ssl-cipher=AES128-SHA
    说明:
    该方法只针对本连接,不会影响其他连接。
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持