利用审计调查可疑操作

本小节提供一个简单例子来形象描述如何利用神通数据库的审计功能来对数据库中的可疑操作进行调查。假设发现数据库中有如下四个可疑操作:

不合法的SELECT操作,本来在表TAB1上无SELECT权限的用户现在可以对其进行SELECT

用户的密码被非法修改

对表TAB1中数据的非法更新

数据库浏览操作变得缓慢,某些表上的索引被删除

现在,怀疑用户FLATER和SCOTT可能做了这些事,为此,需要启用审计功能进行调查。 首先需要以系统审计管理员身份开启审计功能并进行如下审计配置:

START AUDIT;
AUDIT SELECT ON TAB1;
AUDIT GRANT BY FLATER, SCOTT WHENEVER SUCCESSFUL;
AUDIT ALTER USER BY FLATER, SCOTT WHENEVER SUCCESSFUL;
AUDIT UPDATE ON TAB1 WHENEVER SUCCESSFUL;
AUDIT DROP INDEX BY FLATER, SCOTT WHENEVER SUCCESSFUL;

之后,用户FLATER做了如下操作:

GRANT SELECT ON TAB1 TO ROBERT;
UPDATE TAB1 SET COL = 1200 WHERE COL > 1000;

用户ROBERT进行了如下操作:

SELECT *FROM TAB1 WHERE COL > 1000;

用户SCOTT进行了如下操作:

DROP INDEX idx_1 ON TAB1;
ALTER USER kate PASSWORD 'hahacannotlogin';

用户FLATER, SCOTT和ROBERT的这些操作将都被神通数据库详细记录下来,你可以查看审计踪迹,来分析确定是谁应该对上述可疑操作负责。 首先查看对象审计踪迹视图:

SELECT * FROM V_SYS_OBJAUDTRAIL;

结果如下:

+-------------------------+-------------------+-----------------+----------------+--------------+--------------------+----------------------------+-----------------+--------------+---------------------------------------------+
| OBJ_TIMESTAMP | STMT_NAME | USR_NAME | OBJ_NAME | OBJ_TYPE
| OBJ_SCHEMA | OBJ_DATABASE | IS_SUCCESS | ERR_MSG | SQL_CMD
|
+-------------------------+-------------------+-----------------+----------------+--------------+--------------------+----------------------------+-----------------+--------------+---------------------------------------------+
| 2003-12-22 21:03:55 | SELECT | ROBERT | TAB1 | r | PUBLIC |
SYSTEM | t | |SELECT *FROM TAB1 WHERE COL > 1000 |
| 2003-12-22 21:03:46 | UPDATE | FLATER | TAB1 | r | PUBLIC |
SYSTEM | t | | UPDATE TAB1 SET COL = 1200 WHERE COL > 1000 |
+-------------------------+-------------------+-----------------+----------------+--------------+--------------------+----------------------------+-----------------+--------------+---------------------------------------------+
(2 行)

可以看出在对象审计踪迹中记录着用户ROBERT对表TA B1进行过SELECT操作,用户FLATER对表TA B1进行过UPDATE操作。 再查看用户审计踪迹视图:

SELECT *FROM V_SYS_USRAUDTRAIL;

结果如下:

+--------------------------+-------------------+------------------+----------------+----------------+-------------------+------------------------+------------------+--------------+-----------------------------------+
| USR_TIMESTAMP | STMT_NAME | USR_NAME | OBJ_NAME | OBJ_TYPE
| OBJ_SCHEMA | OBJ_DATABASE | IS_SUCCESS | ERR_MSG | SQL_CMD
|
+-------------------------+------------------+-------------+-------+-------+----------+------------+------+---------+--------------------------------------------------------+
| 2003-12-22 21:05:30 | DROP INDEX | SCOTT | TAB1 | r | PUBLIC |
SYSTEM | t | | DROP INDEX idx_1 |
| 2003-12-22 21:03:45 | GRANT | FLATER | TAB1 | r | PUBLIC |
SYSTEM | t | |GRANT SELECT ON TAB1 TO Robert |
| 2003-12-22 21:05:38 | ALTER USER | SCOTT | | | | | t | |
ALTER USER kate PASSWORD 'cannot' |
+--------------------------+------------------+------------+--------+--------+-----------+------------+-------+-------+------------------------------------------------------+
(3 行)

可以看出用户SCOTT不仅把表TAB1上的索引idx_1删除掉了,还修改了用户Kate的密码;而用户FLATER把表TAB1的SELECT权限是授予了用户ROBERT。

根据这些审计踪迹中的信息,可以推断用户FLATER和SCOTT应该对数据库中的上述四类可疑操作负责。