在部署数据库行为监控(DAM)系统时有两个最常见的问题:数据采集的准确性问题和DAM系统的性能问题。这篇文章,我们将讨论如何避免掉入DAM的上述陷进中。
不当的监控方式会影响审计的准确性
DAM产品一个经常被忽视的缺点就是网络监视。对于非关键的数据库基础设施,通过网络监视采集SQL行为是可行的。但如果出于合规需要,则最好选择代理型的DAM产品。这类产品通过在数据库平台上安装代理来检测所有的数据库连接,包括管理员的行为。
上述两种采集方式都能够收集各种原始SQL语句,包括嵌入在查询中的变量,而这是系统自带的审计以及大部分其他采集方式所无法做到的。然而,对于网络流量检测和基于代理的检测两种部署方式而言,在数据收集的准确性和完整性方面有着很大的差别。在高负载的情况下,某些方法就会丢失数据包。由于丢失查询语句很少被注意到,通常不会引起什么抱怨。但是如果正在对一组事务(译注:事务即Transaction,属于数据库管理系统的术语,相当于一组数据库操作的集合)进行SOX合规审计,那么丢失的事务记录将导致审计报告失效。
第二个不易察觉的严重问题是DAM系统收集SQL语句返回信息的能力很弱。所有的查询都会产生响应,一般是一组数据,有时候则仅仅是一个标志成功或者失败的返回码。如果一个查询失败,查询没有被真正执行,这就意味着数据库没有发生变化。最近我做的一项非正式的调查显示某个产品仅仅能够收集45%的微软SQLServer数据库的返回信息,以及15%的Oracle返回信息。仅仅因为一条查询请求被收集到了,并不意味着它就能够成为审计线索的合法部分,还要看这个查询请求的响应信息。
正是由于这些原因,在合规审计的背景下,最好的部署方式是将网络代理方式或者内存扫描器方式与系统自身的审计数据收集方式结合起来。将系统自身的审计信息与(通过网络检测或者代理检测等方式获得的)包含在原始查询中的数据结合起来,提供了一种两全其美的确保数据准确性的方法。