本文目录一览:
什么是数据库审计?
随着信息泄露事件的频发,数据库安全产品逐渐进入大众视野。在数据库安全产品中,数据库审计大概是用户方最为熟悉的一款产品了。在不影响业务系统正常运转的情况下,数据库审计产品能够对数据库的操作访问行为进行追踪审计,这也是大多数用户将其作为数据库安全标配采购的重要原因。本文时代新威为您科普什么是数据库审计,数据库审计的作用和原理有哪些,一起来看看吧!
什么是数据库审计?
数据库审计是指对审计日志和事务日志进行审查,从而跟踪数据和数据库结构的变化。数据库可以这样进行设置:捕捉数据和元数据的改变,以及存储这些资料的数据库所做的修改。典型的审计报告应该包括以下内容:完成的数据库操作、改变的数据值、执行该项操作的人,以及其他几项属性。这些审计功能被植入到所有的关系数据库平台中,并确保生成的记录文件具有较高的准确性和完整性,就好像在数据库中存储的数据一样。此外,审计跟踪还能把一系列的语句转化为合理的事务,并提供业务流程取证(forensic)分析所需的业务环境。
不过,审计功能也存在限制,例如不能对数据访问语句(通常称之为SELECT语句)进行审计。另外,本地数据库审计很难捕捉到用户认可的原始查询(query)和变量(variables),只能从综合的角度对事件做出记录,而日志则可以捕捉到改变前后的数据值。这也使得审计跟踪在检测已改变的内容时,比检测已访问的内容更为有效。
对数据库活动和状态进行取证检查时,审计可以准确的把握事件的本质。对SELECT语句(用户查看数据时会使用)进行检查时,因为本地平台缺乏对这些语句的收集能力,即便利用高级选项实现了这项操作,也会导致性能受到极大损失。既然有简单的方法可以高效地对SELECT语句进行登记(cataloging)(例如,登入失败、尝试查看信用证信息),为什么企业还要选择在本地数据库审计功能上增加其他的数据收集资源。不管怎样,内置的数据库审计功能可以生成事务认证和法规控制的核心信息。
数据库审计作用:
数据库审计通过旁路部署,能够实时记录网络上的数据库活动,对数据库操作进行细粒度审计的合规性管理,对数据库遭受到的风险行为进行告警。它通过对用户访问数据库行为的记录、分析和汇报,用来帮助用户事后生成合规搜索报告、事后追根溯源,同时加强内外部数据库网络行为记录,提高数据资产安全。
数据库审计原理:
数据库审计系统对来自应用系统客户端和dba对数据库的访问行为进行全面审计,不仅审计sql语句,还对ftp、telnet等远程访问进行审计。系统详细记录查询、删除、增加、修改等行为及操作结果,对危险操作还可实时预警,及时阻止,从而达到保护数据库的良好效果。
黑格尔曾说,“存在即合理”,用在数据安全领域,对数据库审计的运用同样适用。时代新威认为数据库审计是当下最经济、最贴身、最有效的数据保镖,同时我国信息化建设想要长远持续发展,数据库审计是必然选择。
mysql数据库审计功能 是否可以跟踪查询
mysql服务器自身没有提供审计功能,但是我们可以使用init-connect + binlog的方法进行mysql的操作审计。由于mysql binlog记录了所有对数据库长生实际修改的sql语句,及其执行时间,和connection_id但是却没有记录connection_id对应的详细用户信息。在后期审计进行行为追踪时,根据binlog记录的行为及对应的connection-id 结合 之前连接日志记录 进行分析,得出最后的结论。
1. 设置init-connect
1.1 创建用于存放连接日志的数据库和表
create database accesslog;
CREATE TABLE accesslog.accesslog (`id` int(11) primary key auto_increment, `time` timestamp, `localname` varchar(30), `matchname` varchar(30))
1.2 创建用户权限
可用现成的root用户用于信息的读取
grant select on accesslog.* to root;
如果存在具有to *.* 权限的用户需要进行限制。
这里还需要注意用户必须对accesslog表具有insert权限
grant select on accesslog.* to user@’%’;
1.3 设置init-connect
在[mysqld]下添加以下设置:
init-connect=’insertinto accesslog.accesslog(id, time, localname, matchname)
values(connection_id(),now(),user(),current_user());’
------注意user()和current_user()的区别
log-bin=xxx
这里必须开启binlog
1.4 重启数据库生效
shell /etc/init.d/mysql restart
2. 记录追踪
2.1 thread_id确认
可以用以下语句定位语句执行人
Tencent:~ # mysqlbinlog --start-datetime='2011-01-26 16:00:00'
--stop-datetime='2011-01-26 17:00:00' /var/lib/mysql/mysql-bin.000010
| grep -B 5 'wsj'
COMMIT/*!*/;
# at 767
#110126 16:16:43 server id 1 end_log_pos 872 Query thread_id=19 exec_time=0 error_code=0
use test/*!*/;
SET TIMESTAMP=1296029803/*!*/;
create table wsj(id int unsigned not null)
--
BEGIN
/*!*/;
# at 940
#110126 16:16:57 server id 1 end_log_pos 1033 Query thread_id=19 exec_time=0 error_code=0
SET TIMESTAMP=1296029817/*!*/;
insert into wsj(id) values (1)
--
BEGIN
/*!*/;
# at 1128
#110126 16:16:58 server id 1 end_log_pos 1221 Query thread_id=19 exec_time=0 error_code=0
SET TIMESTAMP=1296029818/*!*/;
insert into wsj(id) values (2)
2.2 用户确认
thread_id 确认以后,找到元凶就只是一条sql语句的问题了。
mysql select * from accesslog where id=19;
+----+---------------------+---------------------+-----------+
| id | time | localname | matchname |
+----+---------------------+---------------------+-----------+
| 19 | 2011-01-26 16:15:54 | test@10.163.164.216 | test@% |
+----+---------------------+---------------------+-----------+
1 row in set (0.00 sec)
数据库审计 支持审计数据库包括哪些
安华金和数据库审计产品支持市面上30多种数据库类型,关系型数据库类型包含Oracle、MySQL、SQLServer、DB2、Postgres、Sybase、DM、Gbase8A、Kingbase、Informix、Oscar神通、CacheDB、Gbase8T、MariaDB、Percona、Greenplum、Teradata、Hana、SG-RDB_MySQL、SG-RDB_PostgreSQL
等等,非关系型数据库包含HBase、MongoDB、Hive、Impala、Sentry、Redis、HDFS、ElasticSearch、Spark SQL等等,去年做交流的时候聊过,还特意留了一张支持数据库的表格,现在是不是又有新的数据库也可以支持,你跟安华了解下,他们是业界支持数据库类型最多的一家厂商。