做了,不等于做对了!数据库审计不需要“形式主义”
作者:安华金和 发布时间:2019-08-14

放眼数据库安全市场,数据库审计可以说是用户接受度最高的首选产品。可如果进一步观察就会发现,很多用户并没有通过应用数据库审计产品实现对于安全风险的有效监控,不过是为了应付检查或满足合规要求摆摆样子,事实上沦为“僵尸”系统。

安华金和看来,简单归咎于“用户安全意识不强”显然有失公允,相反地,用户“忽视”数据库审计的主要原因是产品不好用——违规访问时不告警;正常操作下却频繁告警...如果一直开着,就要不停地处理误报,十分耗费精力。

图片1 副本.png

可为什么会有如此多的误报?Sql的解析是关键!

目前,市面上的数据库审计产品按照解析方式的不同主要分为两类:

其中多数采用的,是基于正则表达式匹配的审计技术;

此外,还有基于语法、语义进行协议解析的审计技术。

 然而通过测试可以发现,前者的准确率明显低于后者,这是为什么?因为两者的技术原理不同:

 1、基于正则表达式的解析技术

正则表达式是一种“傻瓜式”的通用字符串匹配方法,通常用于在简单场景下匹配指定的字符。而对于超长、多层嵌套、多表关联等复杂的SQL语句,使用正则表达式很容易造成误识别或漏识别。

2、基于语法、语义的解析技术

此种解析技术采用的是“智能”理解的方式,不受限于SQL语句的长度或复杂度等因素,能够精确定义每一条SQL语句,准确理解其真正的含义,从而实现精准告警。 

让我们用一个简单的例子,更加直观地进行理解:

用户希望的安全策略是:仅对b表插入数据的SQL操作定义为风险。

正则表达式配置规则思路:语句中包含insert into、b等关键字。

语法、语义解析技术思路:语句操作关键字为insert into,且作用表对象为b。 

这时候,数据库接收到一条访问请求:insert into a select * from b;

若通过正则表达式匹配SQL后:发现该语句中包括insert into和b关键字,误判其为风险操作——进行告警;

若通过语法语义解析后:理解该语句是要将test b中的所有数据插入到a中,因而准确判定其为非风险操作——不予告警。

图片2 副本.png

除SQL语句解析能力外,通过在应用系统中部署agent,还可以准确地将应用会话与数据库会话进行唯一的组合匹配,有了唯一的组合匹配即可实现百分百的信息关联;而传统数据库审计大多是对应用前端的流量做同时镜像,再通过时间戳进行匹配关联,往往会在高压、高并发的场景下发生“张冠李戴”的错审问题。

对于数据库审计而言,做了,不等于做对了!数据库审计不需要“形式主义”,只有真正为用户解决问题、创造价值的数据库安全产品,才不会沦为凑数的“僵尸”。安华金和,十年专注数据库安全治理,帮助用户让数据使用更安全。