MySQL 数据库安全管理

Maeve ·
更新时间:2024-11-14
· 715 次阅读

一、前言

数据安全是每一个企业都非常关注的问题,甚至有的企业,数据就是一切,失去数据则可能造成无法估计,无法挽回的损失,甚至产品永久下线的风险。

本文将介绍MySQL安全管理策略相关内容,着重介绍MYSQL服务层安全处理措施。

二、编写目的

提高数据库使用者,数据库安全相关意识。

增强数据库抵抗能力,降低数据库故障几率,维护数据库数据安全。

三、数据库系统安全三要素

网络层面:将mysql服务器处在一个有保护的局域网之中,而不是暴露在公网之中,属于基础运维层面。

机器层面:主要是开启防火墙,按需开放端口,避免未授权的登录,防止文件的篡改,数据文件的损坏,属于基础运维层面。

MYSQL服务层: 即mysql自身防御措施,也是数据库的核心安全策略,属于DBA运维层面。

以上1,2步骤各个服务,各种数据库都需要做,都可以做,第三步,则属于MySQL数据库独有

四、MYSQL服务层处理措施

4.1、数据库访问授权管理模块

mysql数据库访问授权管理模块分为,用户管理模块,访问控制模块

用户管理:用户管理,DBA应对各用途分别创建各自用户,主要是负责用户登陆连接相关的基本权限控制,类似于我们的门禁系统,只有公司内部员工,且输入正确的密码,才能打开门进入公司内部。

访问控制:权限管理,DBA应对各用途用户分别授予不同权限,以最小满足需要为准,类似我们的开发同学与运维同学的区别,只有运维同学才有权限登陆到线上机器做基本运维操作(update,delete,等),开发同学就只能观看(select)

4.2、数据库权限层级介绍

mysql数据库权限表,User@Host,db,table_priv,column_priv(基本算是4层权限控制,每一层都包含了低层的所有权限)

用户登录权限(线上一般分为超级用户,程序用户,普通查询用户)

全局性的管理权限,作用于整个Mysql实例级别。

数据库级别的权限,作用于某个指定的数据库上或者所有的数据库上。

数据库对象级别的权限,作用于指定的数据库对象上(表、视图等) 或者所有的数据库对象上。

权限表验证过程 1.通过User@Host表验证用户是否有登陆权限(此处有参数max_connect_errors,此参数防止暴力破解mysql密码,连续错误连接多少次,则ip被拉进小黑屋,需要通过flush hosts 解除); 2.通过验证的用户对数据库的任何操作,都需要具体的权限验证,包括对数据库不同对象(库,表,列,视图,存储过程,函数,索引,导入导出,状态查询)的增删改查等操作。

4.3、数据库安全的运维工作

用户权限: 分配适当权限的各种不同用途的用户,定期删除废弃帐号,定期修改超级用户,程序用户密码,不得在线上主库查询,尽量减少主库的压力(主库数据库资源灰常的宝贵),创建用户时候不得以%作为IP 匹配选项,应尽量严格匹配IP段。用户权限应根据用户的业务需要,配置其所需的最小权限为宜,数据库非root用户不得有delete,drop 等破坏性强的超级权限,这是非常危险的权限,如果不是必要的情况,应禁止远程访问。

备份恢复: 备份,备份,备份(重要的事情说三次),备份包括数据备份,与日志备份,DBA 应对数据库规划好完整备份策略,不同场景使用不同备份策略,一般情况备份需要多处备份,不应堆叠在一个地方,提高容错性。备份需要定期检查,备份并非是十分可靠的,需要人工检查备份是否正确,一般可以加入监控项中。且需要经常进行恢复演练,以便处理问题时候做到沉着冷静,不至于手足无措。

数据加密: 数据库用户使用强密码策略,程序中可以对配置文件的密码进行加密处理,对于系统数据库中重要数据,进行加密处理,防止出现最坏的情形。禁止在数据库中存储铭文密码。

参数配置: 根据机器性能和业务需求,合理设置数据库各参数,最大连接数,内存占用,数据刷写模式等,使数据库得以安全、稳定、高效的运行。

脚本审核: 任何数据库对象的更改,测试完成后,应当由dba来操作线上数据库,不在繁忙时候做大表更新,防止长时间锁表的发生。

应用程序: 防止SQL注入

附 MySQL官方参考手册: https://dev.mysql.com/doc/refman/8.0/en/security.html (MySQL安全准则)

附 阿里云参考手册: https://help.aliyun.com/knowledge_detail/49568.html (MySQL服务安全加固)

莫得感情的小伙伴 原创文章 1获赞 17访问量 213 关注 私信 展开阅读全文
作者:莫得感情的小伙伴



数据 数据库安全 数据库 Mysql

需要 登录 后方可回复, 如果你还没有账号请 注册新账号