了解 MySQL 中的加密

已完成

传输中的数据

Azure Database for MySQL 支持使用 TLS 1.2 的加密连接。 此协议默认启用,并由 tls_version 服务器参数管理。 借助此参数,你可以强制实施服务器允许的最低 TLS 版本。 可以选择多个版本(例如,如果要允许 TLS 1.2 和 1.3)。 更改此参数后,必须重启服务器才能应用所做的更改。

Screenshot showing the server parameter tls_version page.

如果客户端应用程序不支持加密连接,则需要在 Azure Database for MySQL 中禁用加密连接。 在 Azure 门户中,导航到 MySQL 服务器,并在“设置”下选择“服务器参数”。 在“搜索”框中输入 require_secure_transport。 此参数定义客户端连接是否必须使用安全连接,即 TCP/IP 上的 SSL,或使用 Unix 上的套接字文件/Windows 上的共享内存的连接。 如果客户端应用程序不支持加密连接,请将“require_secure_transport”设置为“关”。

注意

如果将“require_secure_transport”设置为“关”,但客户端连接使用加密连接,它仍然会被接受。

若要对客户端应用程序使用加密连接,请在 Azure 门户中下载公共 SSL 证书。 导航到 MySQL 服务器,然后从左侧菜单中选择“网络”。 从顶部菜单中,选择“下载 SSL 证书”。 若要允许应用程序通过 SSL 安全地连接到数据库,请将证书文件保存到本地环境或托管应用程序的客户端环境。

静态数据

InnoDB 存储引擎支持静态数据加密。 加密是在表空间级别设置的,InnoDB 支持对以下表空间进行加密:独立表空间、常规表空间和系统表空间。 对于 MySQL 版本 8.0,请确保服务器参数“default_table_encryption”设置为“开”(默认为“关”)。 对于已加密的表,还可以加密重做日志。 此项已默认禁用。

若要对独立表空间中的表进行加密,请执行以下操作:

CREATE TABLE myEncryptedTable (myID INT) ENCRYPTION = 'Y';

如果随后更改表,则必须指定加密子句:

ALTER TABLE myEncryptedTable ENCRYPTION = 'Y';

Azure Database for MySQL 默认支持使用 Microsoft 管理的密钥进行静态数据加密。 数据和备份始终在磁盘上进行加密,并且无法禁用。