首先我们要定义哪些操作是高风险操作或者影响安全的操作,一般来说,对敏感性高的表进行修改,未得到合理授权用户对数据库进行操作,或者非法IP来源对数据库进行操作,这些应该都算是高风险或者影响安全的操作。一般来说,这个要采用数据库审计系统来抓取,我们本身对数据库分析是很难获得的,而数据库本身的审计功能会带来性能上的消耗,一般生产系统不采用。生产系统常常采用的是在网络上抓取相应的数据包或者在机器上安装代理来获取对数据库的相关操作,这个都是数据库审计系统能够实现的。通过定义相关的审计规则,数据库审计系统应该基本上能够完成你想要的功能。
收起这部分主要是审计部分
通俗的说就是你需要记录所有数据库的操作行为包括超级权限所有者
其次是你当你有记录之后,需要对操作行为进行一个分析,当然这是一个长期的分析
举个简单的例子,你可以通过数据库的审计或者数据库防火墙或者其他安全设备找出取有的sql语句,然后把这些数据录入到你自己的数据分析平台,具体的操作行为包括登录设备,登录设备ip地址,登录时间,退出时间,账号,库,表,语句数据量等,条件运行还可以加上一些其他因素
首先是语句的查找比如TCL/DDL/DML/DCL
TCL(Transaction Control Language):事务控制语言
常用的有 SET TRANSACTION、SAVEPOINT、ROLLBACK、START TRANSACTION、COMMIT等
DML(data manipulation language):
常用的有SELECT、UPDATE、INSERT、DELETE、EXPLAIN PLAN、LOCK TABLE等
DDL(data definition language):
常用的有CREATE、ALTER、DROP、TRUNCATE 等
DCL(Data Control Language)
常用的有GRANT、REVOKE等
具体的可以参考
https://dev.mysql.com/doc/refman/5.7/en/sql-syntax.html
这些都是需要进行分析的
制定你的规则,可以是库级别,表级别,列级别,通过不同的维度界限去分析,在这个过程中,
通过出现的 频率次数,时间范围,确定相应的操作行为,至于是高风险操作还是影响安全的操作这是一个模糊的范围定义,不过高风险操作的频次,可以先邮件通知主管领导如果必要进行权限收回,影响安全的操作也大体相似,主要是需要制定你的条件规则