Proxysql添加后端SSL加密

配置阿里云

安全部门最近放出了新需求,要数据库流量实现内网加密。即mysql<----->proxysql之间是加密的,这里记录整个配置过程,安装部分可以移步去看 https://rorschachchan.github.io/2019/05/31/%E8%AE%B0%E5%BD%95%E9%83%A8%E7%BD%B2ProxySql%E7%9A%84%E8%BF%87%E7%A8%8B/ 这篇文章。

首先登陆阿里云控制台RDS,选择对应的数据库—数据安全性—SSL,点击开通,如图:
akb48

注意!此项举动会重启数据库,所以线上环境请慎重!

在配置的时候,同时下载CA证书,上传到proxysql所在的服务器的/var/lib/proxysql/里。解压缩之,发现压缩包里是三个文件,如图:
akb48

我们主要用的是ApsaraDB-CA-Chain.pem这个文件(如果是读写库,那么这个pem的文件是一模一样的)。

如果数据库开通ssl成功,那么在阿里云的控制台上是显示为“已开通”,在mysql命令行里使用show global variables like '%ssl%';查看如下:
akb48

登录proxysql,查看当前链接mysql情况,如图:
akb48

发现里面的use_ssl是0,所以update mysql_servers set use_ssl=1;将他们改成1。

然后set mysql-ssl_p2s_ca = '/var/lib/proxysql/ApsaraDB-CA-Chain.pem';设定CA证书所在路径。随后就是load mysql variables to runtime;save mysql variables to disk;,保存之后使用select * from runtime_global_variables;查看:
akb48

验证的方法也很简单,在对应数据库里操作的同时tcpdump -s 0 -i any -v port 3306 -w /root/test.pcap 抓一下包看一下里面的内容是否加密了就行。

补充:虽然SSL方式使得安全性提高了,但是相对地使得QPS也降低23%左右。所以要谨慎选择:

  1. 对于非常敏感核心的数据,或者QPS本来就不高的核心数据,可以采用SSL方式保障数据安全性;
  2. 对于采用短链接、要求高性能的应用,或者不产生核心敏感数据的应用,性能和可用性才是首要,建议不要采用SSL方式;

配置AWS

首先去https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/UsingWithRDS.SSL.html ,里下载 https://s3.amazonaws.com/rds-downloads/rds-combined-ca-bundle.pem 这个文件,同样上传到服务器里,在proxysql添加路径和配置。

AWS与阿里云不同的地方是,AWS可以针对某个用户开启SSL的,这需要用命令行登录RDS数据库,使用命令GRANT USAGE ON *.* TO '对应用户名'@'%' REQUIRE SSL;(MYSQL 5.6)开启加密,如果想取消掉,就是GRANT USAGE ON *.* TO '对应用户名'@'%' REQUIRE NONE;

更多信息可以去看:https://docs.aws.amazon.com/zh_cn/AmazonRDS/latest/UserGuide/CHAP_MySQL.html#MySQL.Concepts.SSLSupport

参考资料

https://github.com/sysown/proxysql/wiki/SSL-Support
https://googlebaba.io/mysqlcookbook/7.aboutssl.html

akb48

感谢您请我喝咖啡~O(∩_∩)O,如果要联系请直接发我邮箱chenx1242@163.com,我会回复你的
-------------本文结束感谢您的阅读-------------