随着信息化的发展,数据库安全问题成为当前政府和企事业单位用户关注的焦点,数据库审计产品已经成为当前信息安全产品的盛宠。中培伟业《SQL server 2014高级管理与性能调优最佳实践》培训专家袁老师指出,目前国内数据库审计产品存在8大常见缺陷。
长SQL语句漏审
大多数的SQL语句都在1K以里长度,市面上的数据库审计产品大多都能准确记录下,也能实现正常的解析;但在SQL语句超过1.5K时,很多的数据库审计产品就会发生漏审,或者只能审计下部分SQL语句。
对于一些数据库审计产品,由于没有将多个SQL通讯包进行有效解析和关联,在发生长SQL语句时会发生无法解析或解析不全的情况;具体表现是,对于长SQL语句并未记录,或仅记录了前半部分。
这种情况的危害是,对于有些业务系统中自身就包含长SQL语句,比如经分系统,报表系统,这些SQL语句会被漏记;同时,一些黑客或攻击人员会利用这样的一些漏洞,进行数据库攻击而不留下痕迹。
多语句无法有效分割
多语句是SQL Server上的一个特定情况。在其它的数据库管理系统中,语句之间都有明确的分割标识;而在SQL Serve中语句之间可以没有明确的分隔符。SQL Server会将这些语句不加分割地组织在一个数据库通讯包中发送;对于一些专业化程度不高的数据库审计产品,会将这些语句作为一条语句审计下来。有效地实现多语句分割,需要非常专业的SQL解析技术。一些简单的方法,比如用select、use 、set这样的关键字来进行语句分割,稍微复杂的情况就不好处理了。
即使采用稍微复杂一些的技术,比如正则表达式,也很难做到准确切割;非专业化的数据库审计产品都存在这个缺陷。
数据库对象解析错误
数据库审计产品中一个重要需求是要有效记录下来SQL语句的操作类型、访问对象;根据这些操作类型和访问对象,审计产品可以有效地制订告警策略,可以有效地根据操作类型、访问对象进行事后的追踪与检索。我国相关部门的数据库审计产品标准中要求:应对数据库网络访问对象的名称进行准确审计,包括数据库服务器名称、IP名称、数据库名称、表、视图、序列、包、存储过程、函数、库、索引和触发器等。
参数审计错误
参数绑定是数据库编程中常用的一种方法,通过这种方法,数据库系统可以减少编译次数,快速执行,提升效率;但这种编程方法将对数据库的审计带来挑战,在笔者所见到的若干数据库审计产品中,在这种情况下都出了不少的错误。有的是漏审了语句,有的是记录下了操作的语句,但将具体执行时所使用的参数记错了或漏记了。这些缺陷对于审计产品无疑很是致命。
除了以上列举的4个常见缺陷,在实际情况下还有一些常见的缺陷:
错误的应答结果,特别是影响行数解析不正确
对于SQL操作是否成功,是数据库审计的基本需求;对数据库操作读取或影响了多少行是用户的实际需求。但SQL操作成功与否的准确记录,需要仰仗SQL语句的合理切割和句柄的准确追踪及对返回结果集的完全解析;大多数数据库审计产品在多语句情况,或者通过FETCH操作批量获取等环节下,无法准确获得查询执行的正确性以及影响行数。
充满失真率的应用用户关联
市场上的数据库审计产品大多数都宣传支持三层关联审计,实现SQL语句与业务用户的关联。这种基于三层关联审计的技术,是通过http协议中的参数与SQL语句中的参数的匹配,以及时间的匹配来完成的,属于模糊匹配。这种方法在http参数经过加工后或基于逻辑判断后再发出SQL语句,也即SQL语句的参数与http参数没有直接的匹配关系时将完全失效;在高并发时更是一个灾难。
不够专业化的审计界面
这个问题主要是针对基于网络审计而发展来的数据库审计产品,这种产品由于在设计之初就不是专门面向数据库用户的,因此并未按照数据库的访问类别、会话追踪、数据库对象层次进行界面组织,造成这类产品的界面极其不易使用。
过度冗余的审计信息存储
很多应用系统会采用动态拼接SQL语句的方式来实现对数据库的访问;这会造成大量SQL语句语法形式相同而仅仅是SQL语句中的参数值不同的语句。当前的很多审计产品将这些语句进行重复地记录和存储,造成了审计效率的低下,存储设备的浪费,并会对SQL语句的分析和排查效率造成致命影响。