在生产中,安全相当重要,毕竟你的核心数据都在里面,MySQL因为其开源的流行性,大量个人,企业,政府单位采用,但是,很多部署的时候采用都是默认的配置,这就导致了安全的相对欠缺,你需要针对你的安全有所加强。

总的来说,数据库一般划分为生产库,压测库,准生产库,测试库,开发库。下面部分主要说的是生产库,但其他库也适用。


1 mysql_secure_installation

这是数据库基础的安全设置脚本

a 设置root密码

b 移除匿名用户

c 禁止远程root登录

d 移除test数据库

看看你的环境是否存在上述问题,这个算是是最基本的安全吧。

2 连接访问安全

常见创建用户的时候你需要指定你的ip访问地址范围或者固定ip,一般化而言,只有特定唯一的几个ip的才会访问,或者说你可以采用代理访问的方式,减少应用直接访问你的数据库,而且现在很多中间件也都有白名单机制,原则上是把非法请求防止在数据库以外的地方。

规范数据库管理软件,实现管理软件的标准、统一化,还有严禁杜绝开启外网访问,如果客户端在远程,就根本不应该直接访问数据库,而应该使用中间件堡垒机或其他替代方案。

为了防止连入数据库的应用程序存在后门,造成数据库安全隐患,检查所有连接数据库程序的安全性。通过使用堡垒机或者其他监控登录数据库,禁止对数据库的直接操作。

对已经连接的IP网段进行规范化、统一化的管理,定期进行权限复核操作,对系统所属IP、用户进行权限梳理工作。

对员工进行安全培训,增强员工的系统安全观念,做到细心操作,安全操作。

确保访问数据库的主机为已知用户或者主机,使用专门主机与数据库进行连接。

对重要业务表的所有行为,全部审计,审计同时所有包括即使是DBA的DDL操作行为
最后是报表系统,利用审计的相关日志,出具系统化的审计报告。

3 权限安全

权限这块无可厚非,在简历之初遵循最小权限原则,坚持最小权限原则,是数据库安全的重要步骤。

很多时候我们不知道具体的最小权限是什么,你说一个账号到底需要什么样权限才合适,才不会影响业务?这个不是很好界定。我们需要知道在设置权限时的信息,要授予的权限级别,库级别,表级别,列级别,或者其他超级权限,要授予的权限类型,增删改查等

从mysql.user表来看
Select_priv/Insert_priv/Update_priv/Delete_priv/Create_priv/Drop_priv
Reload_priv/Shutdown_priv/Process_priv/File_priv/Grant_priv/References_priv
Index_priv/Alter_priv/Show_db_priv/Super_priv/Create_tmp_table_priv/Lock_tables_priv
Execute_priv/Repl_slave_priv/Repl_client_priv/Create_view_priv/Show_view_priv/Create_routine_priv/
Alter_routine_priv/Create_user_priv/Event_priv/Trigger_priv/Create_tablespace_priv

用户名,IP地址,是否需要连接数控制,SSL,过期时间等,不要怕麻烦,可能前期设置的时候比较繁琐,但是,一个好的基础设置,才是安全的保障,做到需要什么给什么,而不是。

4 账户安全

用户账户划分原则
超级管理员账号
系统应用账号(比如备份,监控,审计等)
应用业务账号
业务人员账号
开发人员账号
测试人员账号
其他专用账号

主要是防止泄漏,非必要人员不需要知道账号的名称,同时需要制定相应的命名规则,还有就是合理使用自己的账号密码,保护好你的账号密码,对于绝无必要的用户,先禁用,后期删除,要做到无匿名账户和无废弃账户。

5 目录文件安全

提高本地安全性,主要是防止mysql对本地文件的存取,会对系统构成威胁,还有Load DATA LOCAL INFILE,禁用该功能。

这个主要是防止误删除,非权限用户禁止访问目录,还有就是数据文件禁止访问,或者采用更改常用的目录路径,或者通过chroot,要保证该目录不能让未经授权的用户访问后把数据库打包拷贝走了,所以要限制对该目录的访问。

6 密码安全

密码强度复杂性

尽量并且不要使用固定密码,实行每个用户单独密码,长度在16位以上 0-9a-zA-Z~!@#$%^&*()-+ 随机组合。

密码过期机制

根据公司的情况设定密码过期时间,定期更改,同时不可使用重复密码。

密码保存机制

为了方便管理,可能会采用一个密码表,要加强对于密码表的维护更新,最重要的是保证不泄漏。

7 漏洞安全

常规的方式是安装补丁,不过这个往往比较麻烦,主要是版本升级,还有就是防护策略。

8 被忽视的SSL

由于性能或者其他方面原因,很多生产环境并没有使用,不过从5.7+开始,已经好很多了,有需要的加强安全防范其实可以尝试下了。

https://dev.mysql.com/doc/refman/5.7/en/mysql-ssl-rsa-setup.html

9 防火墙安全

一般化数据库前面都会有主备的墙,不过从成本上考虑,很多企业都是单个或者裸奔的,有自己的硬件防火墙最好,没有的话也可以使用系统自带的防火墙,然后在加上其他白名单和中间件白名单过滤辅助措施,也能防止一部分问题。

10 端口安全

默认端口是3306,这个最好修改下,为了方便记忆,你可以根据的ip地址来加密动态调整,不过如果生产网络允许,也可以定期修改,最好不要影响研发进度。

11 记录安全

删除操作系统记录的敏感数据,比如.mysql_history、.bash_history 等,及时清理,移除和禁用.mysql_history文件。

人是安全的主导,管理的对象要从两个角度来看,从信息角度来说就是MySQL本身的安全,要防止数据的丢失和免遭破坏;从技术的角度来说就是整个系统的安全,要防止系统的瘫痪和免遭破坏。

最后说句题外话,监控和审计,安全主要是防患于未然,没有谁希望一天到晚接到各种警报,最好根据公司的实际情况订个详细的规章制度,不要觉得这个麻烦,有些你可能并不觉得有用,但是呢?希望没有但是。

MySQL数据库安全配置规范相关推荐

  1. mysql数据库安全配置规范_MySQL数据库安全配置规范操作

    #1.账号 以普通帐户安全运行mysqld,禁止mysql以root帐号权限运行,攻击者可能通过mysql获得系统root超级用户权限,完全控制系统. ##配置/etc/my.cnf [mysql.s ...

  2. mysql数据库安全配置规范_MySQL数据库安全配置

    tables_priv表指定表级权限.在这里指定的一个权限适用于一个表的所有列. mysql> desc columns_priv; +-------------+--------------- ...

  3. MySQL数据库安全配置

    文章来源:http://www.xfocus.net MySQL数据库安全配置 1.前言 MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统.它具 ...

  4. 阿里云 linux mysql数据库_Linux Mysql数据库安全配置

    Linux Mysql数据库安全配置 目录: 1.修改mysql管理员账号root的密码(2种方法) 2.修改mysql管理员账号root 3.mysql管理员root账号密码遗忘解决办法(2种方法) ...

  5. MySQL安全配置规范

    目录 一.基本安全配置 1.安装最新的安全补丁 2.删除默认安装数据库test 3.禁用"local_infile" 4.禁用"skip-grant-tables&quo ...

  6. mysql安全配置基线_MySql数据库安全配置基线.doc

    MySql数据库安全配置基线 Mysql数据库系统安全配置基线 版本版本控制信息更新日期更新人审批人V2.0创建2012年4月备注: 若此文档需要日后更新,请创建人填写版本控制表格,否则删除版本控制表 ...

  7. mysql数据库安全配置文件_MySQL数据库安全配置

    MySQL数据库安全配置 1.前言 MySQL 是完全网络化的跨平台关系型数据库系统,同时是具有客户机/服务器体系结构的分布式数据库管理系统.它具有功能强.使用简便.管理方便.运行速度快.安全可靠性强 ...

  8. MySQL数据库开发规范-EC

    最近一段时间一边在线上抓取SQL来优化,一边在整理这个开发规范,尽量减少新的问题SQL进入生产库.今天也是对公司的开发做了一次培训,PPT就不放上来了,里面有十来个生产SQL的案例.因为规范大部分还是 ...

  9. 数据库安全之Mysql数据库安全加固

    转载来源 : 数据库安全之Mysql数据库安全加固 :http://www.safebase.cn/article-260336-1.html 账号加固 以普通帐户安全运行mysqld,禁止mysql ...

最新文章

  1. Android开发--AsyncTask异步任务(一)
  2. 一次群晖中勒索病毒后的应急响应
  3. printf以及可变参数函数讲解(转载)
  4. srm#397_div1_500pt 矩阵乘法+快速模幂
  5. VS2015无法打开包括文件corecrt.h 无法打开文件ucrtd.lib
  6. javascript-内置对象-date对象-JSON对象-Math对象
  7. airpods pro是按压还是触摸_AirPods Pro入手开箱 稍后补充使用感受
  8. WPF利用HelixToolKit后台导入3D模型
  9. paip..net VS2010提示当前上下文中不存在名称的解决
  10. 挑战云主机战:学习使用云端服器象棋云库
  11. python web开发实战pdf 百度网盘_python web开发实战 pdf
  12. 如何做一个基于微信积分商城小程序系统毕业设计毕设作品
  13. 数据库基本语句(SQL)
  14. 2022.5.6 java标识符
  15. uniapp之安卓文件操作插件
  16. FATAL: the database system is in recovery mode解决一例
  17. 系统架构师(十)设计模式
  18. 找出1000之内的所有完数
  19. 杨辉三角c语言程序jian,杨辉三角C语言程序队列实现(带源码+解析)
  20. Mysql 数据库 -------- SQL语句进阶查询 ------- 后部分

热门文章

  1. ajax success 不能返回值解决方案 async:false
  2. 为什么刻盘显示计算机内存不够,dvd刻录机在刻录时显示内存不足需终结cd怎么办...
  3. linux修改文件所有者和文件所在组chgrp  和chown
  4. android11 Launcher3 桌面定制开发之删除默认Google搜索框
  5. CCheckListBox的使用
  6. 沃顿商学院自我管理课
  7. winpcap php,利用WinpCap 编写抓包程序
  8. codeblocks配置winpcap开发环境
  9. 1天设计500+作品,Midjourney ai绘画将改变包装设计
  10. GD32F450平台上跑rtthread时,JLINK通过RTT控制块进行VIWER