如何为Amazon Aurora MySQL实例强制启用SSL/TLS连接?
如何为Amazon Aurora MySQL兼容实例强制所有连接使用SSL/TLS?
我正尝试为所有连接至Amazon Aurora MySQL兼容实例的请求启用SSL/TLS。查阅AWS文档后,未找到可在实例层面强制启用该配置的对应参数值。
我已能通过以下命令在用户层面使用SSL连接RDS:
mysql -h rdsinstance.us-west-2.rds.amazonaws.com --ssl-ca=us-ca.pem --ssl-mode=REQUIRED -P 3306 -u user123 -p
执行\s查看连接信息,确认SSL已生效:
-------------- mysql Ver 8.0.31 for Win64 on x86_64 (MySQL Community Server - GPL) Connection id: 41 Current database: Current user: user123@171.165.11.11 SSL: Cipher in use is ECDHE-RSA-AES128-GCM-SHA256 Using delimiter: ; Server version: 5.7.12 MySQL Community Server (GPL) Protocol version: 10 Connection: rdsinstance.us-west-2.rds.amazonaws.com via TCP/IP Server characterset: latin1 Db characterset: latin1 Client characterset: cp850 Conn. characterset: cp850 TCP port: 3306
但我希望所有数据库连接都强制使用SSL,不确定是否因社区版导致无法配置,恳请协助。
解决方案
1. 通过用户权限强制SSL
Aurora MySQL(兼容MySQL 5.7/8.0)支持通过修改用户权限,强制该用户必须使用SSL连接。执行以下SQL配置:
-- 为单个用户开启SSL强制 ALTER USER 'user123'@'%' REQUIRE SSL; -- 批量更新所有现有用户(操作前确认业务无影响) UPDATE mysql.user SET ssl_type = 'ANY' WHERE ssl_type = ''; FLUSH PRIVILEGES;
配置后,未使用SSL的连接会直接被拒绝:ERROR 1045 (28000): Access denied for user 'user123'@'xxx.xxx.xxx.xxx' (using password: YES)
2. 全局参数强制SSL(适用于高版本兼容实例)
若你的Aurora兼容MySQL 5.7.20+或8.0+,可通过参数组设置require_secure_transport参数实现全局强制:
- 进入AWS RDS控制台,找到目标集群的参数组
- 编辑参数组,将
require_secure_transport设为ON - 保存参数组后重启Aurora实例,配置即可生效
该参数会直接拒绝所有未加密的连接,无需逐个配置用户权限。
3. 验证强制效果
配置完成后,尝试不携带SSL参数连接测试:
mysql -h rdsinstance.us-west-2.rds.amazonaws.com -P 3306 -u user123 -p
若返回权限拒绝错误,说明SSL强制已生效。
注意事项
- 兼容MySQL 5.7.19及更早版本的Aurora不支持
require_secure_transport参数,只能通过用户权限层面实现强制 - 配置前务必确认应用程序已适配SSL连接参数,避免业务中断
内容的提问来源于stack exchange,提问作者aka baka
相关产品推荐
相关产品推荐

