MySQL安全你不知道的事

有情怀,有干货,微信搜索【三太子敖丙】关注这个不一样的程序员。

本文 GitHub https://github.com/JavaFamily 已收录,有一线大厂面试完整考点、资料以及我的系列文章。

MySQL这么多章节了,前前后后20多篇了,我看了下自己本地的目录,已经可以说是很全了,但是有一点我发现很关键但是我还没提过,那就是安全。

安全对任何一个系统都至关重要,只有在保证安全的前提下,才能追求稳定性和高性能。

对于一个企业来说,数据就是企业的财富,之前我们也看到过微盟删库以及顺丰删库导致服务长时间不可用的惨案,那么如何保证数据的安全变得尤为重要,下面就聊聊跟MySQL安全相关的那些事,希望对大家有所帮助咯。

MySQL服务器安全

对于自建机房的MySQL服务器安装都会经历网络配置,存储规划,安装服务器以,安装MySQL。

MySQL安全你不知道的事

在实际的生产环境,一般都会有8块盘,每块盘800G,在服务器启动的时候,先做磁盘RAID划分,通常划分两个卷组(volume group),一个是操作系统内置目录使用rootvg,一个就是MySQL的数据相关的卷组datavg,LVM操作主要的步骤如图:

MySQL安全你不知道的事

网络安全

  • 设置白名单

对于自建机房,一般都会使用硬件防火墙来做网络隔离以及IP白名单限制,只允许指定的应用服务器通过3306端口连接MySQL Server,其他的恶意请求应该在防火墙层面进行拦截,例如RDS控制台的数据安全可以添加指定IP。

MySQL安全你不知道的事

操作系统安全

安装完操作系统(例如CentOS 7.4)后,要进行安全漏洞扫描及定期巡检,主要有以下几个方面需要注意:

root启动MySQL

MySQL Server安装完之后,如果用root启动MySQL,则任何具有FILE系统权限的用户都可以读写root用户下的文件,会造成严重的安全隐患,应该将软件目录属主设置成root用户,数据目录属主设置成mysql用户,使用mysql用户启动MySQL实例。

账号弱密码

Linux服务器的所有账号密码不能是弱密码(例如密码是纯数字,纯字母,账号的一部分等,长度太短),建议所有的账号都设置20位长度,包括数字,大写字母,小写字母以及特殊字符。

MySQL安全你不知道的事

审计功能

用户通过 jumpserver 登录到生产服务器的所有操作都应该被审计和录屏,并且定时回放这些操作,确认每一步都是最优的,没有不必要的多操作。

操作命令历史

用户登录到 Linux 服务器上的所有操作命令都会记录到 history 中,将 history 设置大一点,保存更多的操作命令记录。

MySQL安全你不知道的事

服务器备份

定期的对服务器进行备份,备份内容主要包括 Linux 内置目录(/usr /var /lib)和MySQL数据目录(数据文件,binlog,undolog, redolog),同时要定期检查备份的有效性以及恢复演练,以下是阿里云 ECS 的快照,建议每天一个快照,保留7天。

MySQL安全你不知道的事

账号密码

建议所有的账号都设置20位长度,包括数字,大写字母,小写字母以及特殊字符,如

账号分离

对于分布式系统来说,会有多个服务,且服务之间存在调用关系,比如交易 trade-service 会调用支付 payment-service。

为了安全起见,给每个服务创建一个数据库,同时分配自己的账号,禁止跨库访问。

MySQL安全你不知道的事

修改密码认证方式

MySQL默认都是本地密码认证插件 mysql_native_password,如果改成 auth_socket,则不需要密码,只检查用户是否使用UNIX套接字进行连接,然后比较用户名即可。

MySQL安全你不知道的事

这样只读账号也能查看innodb_trx表中所有业务账号正在执行的SQL语句,SQL可能包含敏感信息。

MySQL安全你不知道的事

审计功能

安装 MySQL Server 之后,应该配置和开启 Audit Plugin,这样经过 MySQL Server 执行所有的 SQL 都会被记录下来,一方面可以排除问题,另一方面可以做性能监控分析(例如一段时间内某个SQL的QPS,TPS)。

数据备份

需要定时备份数据文件和 binlog,对于自建 MySQL 服务器,可以使用xtrabackup去做每天的物理全备,对于RDS来说,需要配置备份策略,同时也要定期的检查的备份完整性和有效性。

MySQL安全你不知道的事

数据安全

数据是企业宝贵的资源,每个业务域产生的数据以及需要的数据都不一样,如何保证安全的访问数据是非常重要的,一般大公司都有自己的数据管理平台,比如阿里的iDB,现在已经是一个服务DMS(数据管理服务),可以管理各种类型的数据库。

数据访问范化

所有数据变更都应该走审批流程,发起人和审批人不能是同一个,重要敏感的数据操作需要提交工单,进行多级审批,确认没有问题才能执行,执行之前要先做好备份,以便回滚时使用。建议使用数据库管理平台来管理数据库,一般需要用户注册账号,申请权限(数据导出,结构变更,数据变更),服务Owner审批,提交工单进入审批流程等操作,所有的操作环节都会记录操作日志。

MySQL安全你不知道的事

数据加密

从MySQL 5.7开始,InnoDB支持对独立表空间静态数据加密,是引擎内部数据页级别的加密手段,当数据页写入文件系统时加进行加密,从数据文件读到内存中时解密,基于旋转秘钥文件而起作用,对于数据保护非常有用。

MySQL安全你不知道的事

MySQL安全你不知道的事

Oracle数据库有两个特性:回收站(recyclebin)和闪回(flashback)功能,drop table如果不加purge选项,Oracle会把这个表rename一个新的表名存放到回收站里,需要还原时执行flashback table即可。那如果delete能恢复吗是可以的,利用flashback query去Undo Log里获取删除时间前的数据,回插到原表即可,这两个功能是很棒的,可惜MySQL里都没有。

通常MySQL的主从复制是实时的一致性复制,Master执行的变更会立刻通过binlog复制同步到Slave执行。如果不想让Slave那么快的执行Master的变更,可以配置延迟从库,利用它可以实现数据误删的快速恢复,例如延迟一个小时。

MySQL安全你不知道的事

链接:https://pan.baidu.com/s/1ZQEKJBgtYle3v-1LimcSwg 密码:

我是敖丙,你知道的越多,你不知道的越多,感谢各位人才的:点赞收藏评论,我们下期见!


文章持续更新,可以微信搜一搜「 三太子敖丙 」第一时间阅读,回复【资料】有我准备的一线大厂面试资料和简历模板,本文 GitHub https://github.com/JavaFamily 已经收录,有大厂面试完整考点,欢迎Star。

文章知识点与官方知识档案匹配,可进一步学习相关知识MySQL入门技能树数据库组成31863 人正在系统学习中

MySQL安全你不知道的事 微信公众号 MySQL安全你不知道的事 关注【领取】大厂面试资料

来源:敖 丙

声明:本站部分文章及图片转载于互联网,内容版权归原作者所有,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年10月26日
下一篇 2020年10月26日

相关推荐