审计

审计机制是DM数据库管理系统安全管理的重要组成部分之一。DM数据库除了提供数据安全保护措施外,还提供对日常事件的事后审计监督。DM具有一个灵活的审计子系统,可以通过它来记录系统级事件、个别用户的行为以及对数据库对象的访问。通过考察、跟踪审计信息,数据库审计员可以查看用户访问的形式以及曾试图对该系统进行的操作,从而采取积极、有效的应对措施。

5.1 审计开关

在DM系统中,专门为审计设置了开关,要使用审计功能首先要打开审计开关。审计开关由过程VOID SP_SET_ENABLE_AUDIT(param int);控制,过程执行完后会立即生效,param有三种取值:

  • 0:关闭审计
  • 1:打开普通审计
  • 2:打开普通审计和实时审计

缺省值为0。

,打开普通审计开关。

SP_SET_ENABLE_AUDIT (1);
注意

审计开关必须由具有数据库审计员权限的管理员进行设置。

数据库审计员可通过查询V$DM_INI动态视图查询ENABLE_AUDIT的当前值。

SELECT * FROM V$DM_INI WHERE PARA_NAME='ENABLE_AUDIT';

5.2 审计的设置与取消

数据库审计员指定被审计对象的活动称为审计设置,只有具有AUDIT DATABASE权限的审计员才能进行审计设置。DM提供审计设置系统过程来实现这种设置,被审计的对象可以是某类操作,也可以是某些用户在数据库中的全部行踪。只有预先设置的操作和用户才能被DM系统自动进行审计。

DM允许在三个级别上进行审计设置,如表5.1所示。

表5.1 审计级别
审计级别 说明
系统级 系统的启动与关闭,此级别的审计无法也无需由用户进行设置,只要审计开关打开就会自动生成对应审计记录
语句级 导致影响特定类型数据库对象的特殊SQL或语句组的审计。如AUDIT TABLE 将审计CREATE TABLE、ALTER TABLE和DROP TABLE等语句
对象级 审计作用在特殊对象上的语句。如test表上的INSERT语句

审计设置存放于DM字典表SYSAUDIT中,进行一次审计设置就在SYSAUDIT中增加一条对应的记录,取消审计则删除SYSAUDIT中相应的记录。

5.2.1 语句级审计

语句级审计的动作是全局的,不对应具体的数据库对象。其审计选项如表5.2所示。

表5.2 语句级审计选项
审计选项 审计的数据库操作 说明
ALL 所有的语句级审计选项 所有可审计操作
USER CREATE USER
ALTER USER
DROP USER
创建/修改/删除用户操作
ROLE CREATE ROLE
DROP ROLE
创建/删除角色操作
TABLESPACE CREATE TABLESPACE
ALTER TABLESPACE
DROP TABLESPACE
创建/修改/删除表空间操作
SCHEMA CREATE SCHEMA
DROP SCHEMA
SET SCHEMA
创建/删除/设置当前模式操作
TABLE CREATE TABLE
ALTER TABLE
DROP TABLE
TRUNCATE TABLE
创建/修改/删除/清空基表操作
VIEW CREATE VIEW
ALTER VIEW
DROP VIEW
创建/修改/删除视图操作
INDEX CREATE INDEX
DROP INDEX
创建/删除索引操作
PROCEDURE CREATE PROCEDURE
ALTER PROCEDURE
DROP PROCEDURE
创建/修改/删除存储模块操作
TRIGGER CREATE TRIGGER
ALTER TRIGGER
DROP TRIGGER
创建/修改/删除触发器操作
SEQUENCE CREATE SEQUENCE
ALTER SEQUENCE
DROP SEQUENCE
创建/修改/删除序列操作
CONTEXT CREATE CONTEXT INDEX
ALTER CONTEXT INDEX
DROP CONTEXT INDEX
创建/修改/删除全文索引操作
SYNONYM CREATE SYNONYM
DROP SYNONYM
创建/删除同义词
GRANT GRANT 授予权限操作
REVOKE REVOKE 回收权限操作
AUDIT AUDIT 设置审计操作
NOAUDIT NOAUDIT 取消审计操作
INSERT TABLE INSERT INTO TABLE 表上的插入操作
UPDATE TABLE UPDATE TABLE 表上的修改操作
DELETE TABLE DELETE FROM TABLE 表上的删除操作
SELECT TABLE SELECT FROM TABLE 表上的查询操作
EXECUTE PROCEDURE CALL PROCEDURE 调用存储过程或函数操作
PACKAGE CREATE PACKAGE
DROP PACKAGE
创建/删除包规范
PACKAGE BODY CREATE PACKAGE BODY
DROP PACKAGE BODY
创建/删除包体
MAC POLICY CREATE POLICY
ALTER POLICY
DROP POLICY
创建/修改/删除策略
MAC LEVEL CREATE LEVEL
ALTER LEVEL
DROP LEVEL
创建/修改/删除等级
MAC COMPARTMENT CREATE COMPARTMENT
ALTER COMPARTMENT
DROP COMPARTMENT
创建/修改/删除范围
MAC GROUP CREATE GROUP
ALTER GROUP
DROP GROUP
ALTER GROUP PARENT
创建/修改/删除组,更新父组
MAC LABEL CREATE LABEL
ALTER LABEL
DROP LABEL
创建/修改/删除标记
MAC USER USER SET LEVELS
USER SET COMPARTMENTS
USER SET GROUPS
USER SET PRIVS
设置用户等级/范围/组/特权
MAC TABLE INSER TABLE POLICY
REMOVE TABLE POLICY
APPLY TABLE POLICY
插入/取消/应用表标记
MAC SESSION SESSION LABEL
SESSION ROW LABEL
RESTORE DEFAULT LABELS
SAVE DEFAULT LABELS
保存/取消会话标记 设置会话默认标记 设置会话行标记
CHECKPOINT CHECKPOINT 检查点(checkpoint)
SAVEPOINT SAVEPOINT 保存点
EXPLAIN EXPLAIN 显示执行计划
NOT EXIST 分析对象不存在导致的错误
DATABASE ALTER DATABASE 修改当前数据库操作
CONNECT LOGIN LOGOUT 登录/退出操作
COMMIT COMMIT 提交操作
ROLLBACK ROLLBACK 回滚操作
SET TRANSACTION SET TRX ISOLATION
SET TRX READ WRITE
设置事务的读写属性和隔离级别
BACKUP BACKUP DATABASE
BACKUP TABLESPACE
BACKUP TABLE
BACKUP ARCHIVE
库/表空间/表/归档备份操作
RESTORE RESTORE TABLESPACE
RESTORE TABLE
表空间/表还原操作
DIMP DIMP FULL
DIMP OWNER
DIMP SCHEMA
DIMP TABLE
逻辑导入:库级/用户级/模式级/表级
DEXP DEXP FULL
DEXP OWNER
DEXP SCHEMA
DEXP TABLE
逻辑导出:库级/用户级/模式级/表级
FLDR FLDR IN
FLDR OUT
FLDR工具导入/导出
WARNING AUD SPACE WARNING 审计剩余可用空间不足
KEY CREATE KEY
DESTROY KEY
生成/销毁密钥
CRYPT ENCRYPT
DECRYPT
数据加密/解密
DTS DTS IN
DTS OUT
DTS工具迁入/迁出

设置语句级审计的系统过程如下:

VOID
SP_AUDIT_STMT(
    TYPE VARCHAR(30),
    USERNAME VARCHAR (128),
    WHENEVER VARCHAR (20)
)

参数说明:

TYPE 语句级审计选项,即上表中的第一列

USERNAME 用户名,NULL表示不限制

WHENEVER 审计时机,可选的取值为:

  • ALL:所有的
  • SUCCESSFUL:操作成功时
  • FAIL:操作失败时

例1,审计表的创建、修改和删除。

SP_AUDIT_STMT('TABLE', 'NULL', 'ALL');

例2,对SYSDBA创建用户成功进行审计。

SP_AUDIT_STMT('USER', 'SYSDBA', 'SUCCESSFUL');

例3,对用户USER2进行的表的修改和删除进行审计,不管失败和成功。

SP_AUDIT_STMT('UPDATE TABLE', 'USER2', 'ALL');
SP_AUDIT_STMT('DELETE TABLE', 'USER2', 'ALL');

取消语句级审计的系统过程如下:

VOID
SP_NOAUDIT_STMT(
    TYPE VARCHAR(30),
    USERNAME VARCHAR (128),
    WHENEVER VARCHAR (20)
)

参数说明:

TYPE 语句级审计选项,即上表中的第一列

USERNAME 用户名,NULL表示不限制

WHENEVER 审计时机,可选的取值为:

  • ALL:所有的
  • SUCCESSFUL:操作成功时
  • FAIL:操作失败时

使用说明:

取消审计语句和设置审计语句进行匹配,只有完全匹配的才可以取消审计,否则无法取消审计。

例1,取消对表的创建、修改和删除的审计。

SP_NOAUDIT_STMT('TABLE', 'NULL', 'ALL');

例2,取消对SYSDBA创建用户成功进行审计。

SP_NOAUDIT_STMT('USER', 'SYSDBA', 'SUCCESSFUL');

例3,取消对用户USER2进行的表的修改和删除的审计。

SP_NOAUDIT_STMT('UPDATE TABLE', 'USER2', 'ALL');
SP_NOAUDIT_STMT('DELETE TABLE', 'USER2', 'ALL');

5.2.2 对象级审计

对象级审计发生在具体的对象上,需要指定模式名以及对象名。其审计选项如表5.3所示。

表5.3 对象级审计选项
审计选项(SYSAUDITRECORDS表中operation字段对应的内容) TABLE VIEW COL PROCEDURE FUNCTION TRIGGER
INSERT
UPDATE
DELETE
SELECT
EXECUTE
MERGE INTO
EXECUTE TRIGGER
LOCK TABLE
BACKUP TABLE
RESTORE TABLE
ALL(所有对象级审计选项)

其中,对于UPDATE和DELETE操作,因为也需要做SELECT操作,所以只要设置审计SELECT操作时,UPDATE和DELETE也会作为SELECT操作被审计。

设置对象级审计的系统过程如下:

VOID
SP_AUDIT_OBJECT (
    TYPE VARCHAR(30),
    USERNAME VARCHAR (128),
    SCHNAME VARCHAR (128),
    TVNAME VARCHAR (128),
    WHENEVER VARCHAR (20)
)

VOID
SP_AUDIT_OBJECT (
    TYPE VARCHAR(30),
    USERNAME VARCHAR (128),
    SCHNAME VARCHAR (128),
    TVNAME VARCHAR (128),
    COLNAME VARCHAR (128),
    WHENEVER VARCHAR (20)
)

参数说明:

TYPE 对象级审计选项,即上表中的第一列

USERNAME 用户名

SCHNAME 模式名,为空时置‘null’

TVNAME 表、视图、存储过程名不能为空

COLNAME 列名

WHENEVER 审计时机,可选的取值为:

  • ALL:所有的
  • SUCCESSFUL:操作成功时
  • FAIL:操作失败时

例1,对SYSDBA对表PERSON.ADDRESS进行的添加和修改的成功操作进行审计。

SP_AUDIT_OBJECT('INSERT', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');
SP_AUDIT_OBJECT('UPDATE', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');

例2,对SYSDBA对表PERSON.ADDRESS的ADDRESS1列进行的修改成功的操作进行审计。

SP_AUDIT_OBJECT('UPDATE','SYSDBA','PERSON','ADDRESS','ADDRESS1','SUCCESSFUL');

取消对象级审计的系统过程如下:

VOID
SP_NOAUDIT_OBJECT (
    TYPE VARCHAR(30),
    USERNAME VARCHAR (128),
    SCHNAME VARCHAR (128),
    TVNAME VARCHAR (128),
    WHENEVER VARCHAR (20)
)

VOID
SP_NOAUDIT_OBJECT (
    TYPE VARCHAR(30),
    USERNAME VARCHAR (128),
    SCHNAME VARCHAR (128),
    TVNAME VARCHAR (128),
    COLNAME VARCHAR (128),
    WHENEVER VARCHAR (20)
)

参数说明:

TYPE 对象级审计选项,即上表中的第一列

USERNAME 用户名

SCHNAME 模式名,为空时置‘null’

TVNAME 表、视图、存储过程名不能为空

COLNAME 列名

WHENEVER 审计时机,可选的取值为:

  • ALL:所有的
  • SUCCESSFUL:操作成功时
  • FAIL:操作失败时

使用说明:

取消审计语句和设置审计语句进行匹配,只有完全匹配的才可以取消审计,否则无法取消审计。

例1,取消对SYSDBA对表PERSON.ADDRESS进行的添加和修改的成功操作的审计。

SP_NOAUDIT_OBJECT('INSERT', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');
SP_NOAUDIT_OBJECT('UPDATE', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');

例2,取消对SYSDBA对表PERSON.ADDRESS的ADDRESS1列进行的修改成功操作的审计。

SP_NOAUDIT_OBJECT('UPDATE','SYSDBA','PERSON','ADDRESS','ADDRESS1','SUCCESSFUL');

5.2.3 语句序列审计

DM还提供了语句序列审计功能,作为语句级审计和对象级审计的补充。语句序列审计需要审计员预先建立一个审计规则,包含N条SQL语句(SQL1,SQL2……),如果某个会话依次执行了这些SQL语句,就会触发审计。

建立语句序列审计规则的过程包括下面三个系统过程。

VOID
    SP_AUDIT_SQLSEQ_START(
    NAME VARCHAR (128)
)

VOID
    SP_AUDIT_SQLSEQ_ADD(
    NAME VARCHAR (128),
    SQL VARCHAR (8188)
)

VOID
    SP_AUDIT_SQLSEQ_END(
    NAME VARCHAR (128)
)

参数说明:

NAME 语句序列审计规则名

SQL 需要审计的语句序列中的SQL语句

使用说明:

建立语句序列审计规则需要先调用SP_AUDIT_SQLSEQ_START,之后调用若干次SP_AUDIT_SQLSEQ_ADD,每次加入一条SQL语句,审计规则中的SQL语句顺序根据加入SQL语句的顺序确定,最后调用SP_AUDIT_SQLSEQ_END完成规则的建立。

例如,建立一个语句序列审计规则AUDIT_SQL1。

SP_AUDIT_SQLSEQ_START('AUDIT_SQL1');
SP_AUDIT_SQLSEQ_ADD('AUDIT_SQL1', 'SELECT NAME FROM TEST1;');
SP_AUDIT_SQLSEQ_ADD('AUDIT_SQL1', 'SELECT ID FROM TEST2;');
SP_AUDIT_SQLSEQ_ADD('AUDIT_SQL1', 'SELECT * FROM TEST3;');
SP_AUDIT_SQLSEQ_END('AUDIT_SQL1');

可使用下面的系统过程删除指定的语句序列审计规则。

VOID
    SP_AUDIT_SQLSEQ_DEL(
    NAME VARCHAR (128)
)

参数说明:

NAME 语句序列审计规则名

例如,删除语句序列审计规则AUDIT_SQL1。

SP_AUDIT_SQLSEQ_DEL('AUDIT_SQL1');

5.2.4 关于审计设置的一些说明

  • 只要审计功能被启用,系统级的审计记录就会产生;
  • 在进行数据库审计时,审计员之间没有区别,可以审计所有数据库对象,也可取消其他审计员的审计设置;
  • 语句级审计不针对特定的对象,只针对用户;
  • 对象级审计针对指定的用户与指定的对象进行审计;
  • 在设置审计时,审计选项不区分包含关系,都可以设置;
  • 在设置审计时,审计时机不区分包含关系,都可以进行设置;
  • 如果用户执行的一条语句与设置的若干审计项都匹配,只会在审计文件中生成一条审计记录。

5.3 审计文件管理

DM审计信息存储在审计文件中。审计文件默认存放在数据库的SYSTEM_PATH指定的路径,即数据库所在路径。用户也可在dm.ini文件中添加参数AUD_PATH来指定审计文件的存放路径,例如:

##file location of dm.ctl

CTL_PATH	= D:\dmdbms\data\DAMENG\dm.ctl		##ctl file path

CTL_BAK_PATH	=D:\dmdbms\data\DAMENG\ctl_bak	##dm.ctl backup path

CTL_BAK_NUM	= 10   ##backup number of dm.ctl, allowed to keep one more backup file besides specified number.

SYSTEM_PATH	= D:\dmdbms\data\DAMENG        ##system path

CONFIG_PATH	= D:\dmdbms\data\DAMENG        ##config path

TEMP_PATH	= D:\dmdbms\data\DAMENG        ##temporary file path

BAK_PATH	= D:\dmdbms\data\DAMENG\bak    ##backup file path

DFS_PATH	=                              ##path of db_file in dfs

AUD_PATH	=D:\dmdbms\data\DAMENG\aud

审计文件命名格式为“AUDIT_GUID_创建时间.log”,其中“GUID”为DM给定的一个唯一值。

审计文件的大小可以通过DM的INI参数AUDIT_MAX_FILE_SIZE指定。当单个审计文件超过指定大小时,系统会自动切换审计文件,自动创建新的审计文件,审计记录将写入新的审计文件中。AUDIT_MAX_FILE_SIZE为动态系统级参数,缺省值为100M,DBA用户可通过系统过程SP_SET_PARA_VALUE对其进行动态修改,有效值范围为1~4096M。

随着系统的运行,审计记录将会不断增加,审计文件需要更多的磁盘空间。在极限情况下,审计记录可能会因为磁盘空间不足而无法写入审计文件,最终导致系统无法正常运行。对这种情况的处理有两种策略,通过设置DM的INI参数AUDIT_FILE_FULL_MODE进行配置。当将AUDIT_FILE_FULL_MODE置为1时,将删除最老的审计文件,直至有足够的空间创建新审计文件。若将所有可以删除的审计文件都删除后空间仍旧不够,则数据库会挂起不再处理任何请求,直至磁盘空间被清理出足够创建新审计文件的空间;当将AUDIT_FILE_FULL_MODE置为2时,将不再写审计记录,默认值为1。AUDIT_FILE_FULL_MODE为静态参数,可通过系统过程SP_SET_PARA_VALUE进行修改,但是修改需要重新启动DM数据库服务器才能生效。

注意

两种策略都会导致审计记录的缺失,因此,管理员应该及时对审计文件进行备份。

若系统审计人员已对历史审计信息进行了充分分析,不再需要某个时间点之前的历史审计信息,可使用下面的系统过程删除指定时间点之前的审计文件,但是不会删除DM当前正在使用的审计文件。

VOID
    SP_DROP_AUDIT_FILE(
    TIME_STR VARCHAR(128),
    TYPE INT
);

参数说明:

TIME_STR:指定的时间字符串

TYPE:审计文件类型,0表示删除普通审计文件,1表示删除实时审计文件

例如,指定删除2015-12-6 16:30:00以前的普通审计文件。

SP_DROP_AUDIT_FILE('2015-12-6 16:30:00',0);

DM审计文件支持文件加密,审计管理员可使用下面的系统过程设置审计文件加密:

VOID
    SP_AUDIT_SET_ENC(
    NAME VARCHAR(128),
    KEY VARCHAR(128)
)

参数说明:

NAME 加密算法名,可使用DM支持的加密算法,见表7.1;也支持用户自定义加密算法,见第8章加密引擎介绍

KEY 加密密钥

5.4 审计信息查阅

当使用DM提供的审计机制进行了审计设置后,这些审计设置信息都记录在数据字典表SYSAUDITOR.SYSAUDIT中,结构如下表所示。审计类型用户可以查看此数据字典表查询审计设置信息。

表5.4 SYSAUDITOR.SYSAUDIT表结构
序号 数据类型 说明
1 LEVEL SMALLINT 审计级别
2 UID INTEGER 用户ID
3 TVPID INTEGER 表/视图/触发器/存储过程函数ID
4 COLID SMALLINT 列ID
5 TYPE SMALLINT 审计类型
6 WHENEVER SMALLINT 审计情况

只要DM系统处于审计活动状态,系统按审计设置进行审计活动,并将审计信息写入审计文件。审计记录内容包括操作者的用户名、所在站点、所进行的操作、操作的对象、操作时间、当前审计条件等。审计用户可以通过动态视图SYSAUDITOR.V$AUDITRECORDS查询系统默认路径下的审计文件的审计记录,动态视图的结构如下表所示。

表5.5 SYSAUDITOR.V$AUDITRECORDS结构
序号 数据类型 说明
1 USERID INTEGER 用户ID
2 USERNAME VARCHAR(128) 用户名
3 ROLEID INTEGER 角色ID。 没有具体角色的用户和SQL序列审计,没用角色信息。
4 ROLENAME VARCHAR(128) 角色名。 没有具体角色的用户和SQL序列审计,没用角色信息。
5 IP VARCHAR(25) IP地址
6 SCHID INTEGER 模式ID
7 SCHNAME VARCHAR(128) 模式名
8 OBJID INTEGER 对象ID
9 OBJNAME VARCHAR(128) 对象名
10 OPERATION VARCHAR(128) 操作类型名
11 SUCC_FLAG CHAR(1) 成功标记
12 SQL_TEXT VARCHAR(8188) SQL文本
13 DESCRIPTION VARCHAR(8188) 描述信息
14 OPTIME DATETIME 操作时间
15 MAC VARCHAR(25) 操作对应的MAC地址
16 SEQNO TINYINT DMDSC环境下表示生成审计记录的节点号,非DMDSC环境下始终0

例如,SYSAUDITOR进行如下的审计设置:

/*-------- SYSAUDITOR/SYSAUDITOR ----------*/
SP_AUDIT_OBJECT('INSERT', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');
SP_AUDIT_OBJECT('UPDATE', 'SYSDBA', 'PERSON', 'ADDRESS', 'SUCCESSFUL');

之后查询SYSAUDITOR.SYSAUDIT数据字典表,可以看到对应的审计设置记录:

SELECT * FROM SYSAUDITOR.SYSAUDIT;
行号 			LEVEL 		UID 	  TVPID 	  COLID 	 TYPE WHENEVER
---------- ----------- ----------- ----------- ----------- -----------
1 			2 			50331649 	1196 		-1 			50 		1
2 			2 			50331649 	1196 		-1 			53 		1

以SYSDBA登录,对表PERSON.ADDRESS进行插入和删除操作:

/*-------- SYSDBA/SYSDBA --------*/
INSERT INTO PERSON.ADDRESS(ADDRESS1,ADDRESS2,CITY,POSTALCODE)
VALUES('AAA','','BBB','111111');
DELETE FROM PERSON.ADDRESS WHERE ADDRESS1='AAA';
COMMIT;

再以SYSAUDITOR登录,查询SYSAUDITOR.V$AUDITRECORDS,可以看到SYSDBA刚才的插入操作生成的审计记录:

/*-------- SYSAUDITOR/SYSAUDITOR ----------*/
SELECT * FROM SYSAUDITOR.V$AUDITRECORDS WHERE USERNAME='SYSDBA';
行号 			USERID 	  USERNAME 	 ROLEID   ROLENAME  IP  SCHID      SCHNAME
---------- ----------- -------- ----------- -------- --- ----------- -------
OBJID 		OBJNAME 	OPERATION 	SUCC_FLAG
			----------- ------- --------- ---------
			SQL_TEXT
			------------------------------------------------------------------
			DESCRIBTION OPTIME MAC SEQNO
			----------- --------------------------- ----------------- ----
			1 50331649 SYSDBA 67108864 DBA ::1 150995945 PERSON
			1196 ADDRESS INSERT Y
INSERT INTO PERSON.ADDRESS(ADDRESS1,ADDRESS2,CITY,POSTALCODE)
VALUES('AAA','','BBB','111111');
2016-03-15 15:07:49.000000E0-3F-49-AE-86-5F 0

由于并没有相关的审计设置,SYSDBA之前执行的DELETE操作没有生成审计记录。

DM还提供了以下系统函数供查看审计设置中涉及的审计类型TYPE、审计级别LEVEL、以及生成时机WHENEVER常量对应的具体信息,作为上述动态视图的补充。

  • SF_GET_AUDIT_TYPENAME
VARCHAR
    SF_GET_AUDIT_TYPENAME(
    TYPE INT
);

参数说明:

TYPE 审计类型,对应SYSAUDIT中TYPE字段值

返回值:

参数TYPE值的意义描述

例如,查看SYSAUDIT中TYPE值50的意义描述。

SELECT SF_GET_AUDIT_TYPENAME(50);

返回值为:INSERT

  • SF_GET_AUDIT_LEVELNAME
VARCHAR
    SF_GET_AUDIT_LEVELNAME(
    LEVEL INT
);

参数说明:

LEVEL 审计级别,对应SYSAUDIT中LEVEL字段值

返回值:

参数LEVEL值的意义描述

例如,查看SYSAUDIT中LEVEL值为2的意义描述。

SELECT SF_GET_AUDIT_LEVELNAME(2);

返回值为:OBJECT

  • SF_GET_AUDIT_WHENEVERNAME
VARCHAR
    SF_GET_AUDIT_WHENEVERNAME(
    WHENEVER INT
);

参数说明:

WHENEVER 审计记录生成时机,对应SYSAUDIT中WHENEVER字段值

返回值:

参数WHENEVER值的意义描述

例如,查看SYSAUDIT中WHENEVER值为1的意义描述。

SELECT SF_GET_AUDIT_WHENEVERNAME(1);

返回值为:SUCCESSFUL

5.5 审计实时侵害检测

当执行SP_SET_ENABLE_AUDIT (2);时,开启审计实时侵害检测功能。

实时侵害检测系统用于实时分析当前用户的操作,并查找与该操作相匹配的实时审计分析规则,如果规则存在,则判断该用户的行为是否是侵害行为,确定侵害等级,并根据侵害等级采取相应的响应措施。

5.5.1 创建与删除实时侵害检测规则

当执行SP_SET_ENABLE_AUDIT (2);时,具有AUDIT DATABASE权限的用户可以使用下面的系统过程创建实时侵害检测规则。

VOID
SP_CREATE_AUDIT_RULE(
    RULENAME VARCHAR(128),
    OPERATION VARCHAR(30),
    USERNAME VARCHAR(128),
    SCHNAME VARCHAR(128),
    OBJNAME VARCHAR(128),
    WHENEVER VARCHAR(20),
    ALLOW_IP VARCHAR(1024),
    ALLOW_DT VARCHAR(1024),
    INTERVAL INTEGER,
    TIMES INTERGER
);

参数说明:

RULENAME 创建的审计实时侵害检测规则名

OPERATION 审计操作名,取值可选项下表

OPERATION可选项
CREATE USER
DROP USER
ALTER USER
CREATE ROLE
DROP ROLE
CREATE TABLESPACE
DROP TABLESPACE
ALTER_TABLESPACE
CREATE SCHEMA
DROP SCHEMA
SET SCHEMA
CREATE TABLE
DROP TABLE
TRUNCATE TABLE
CREATE VIEW
ALTER VIEW
DROP VIEW
ALTER VIEW
CREATE INDEX
DROP INDEX
CREATE PROCEDURE
ALTER PROCEDURE
DROP PROCEDURE
CREATE TRIGGER
DROP TRIGGER
ALTER TRIGGER
CREATE SEQUENCE
DROP SEQUENCE
CREATE CONTEXT INDEX
DROP CONTEXT INDEX
ALTER CONTEXT INDEX
GRANT
REVOKE
AUDIT
NOAUDIT
CHECKPOINT
CREATE POLICY
DROP POLICY
ALTER POLICY
CREATE LEVEL
ALTER LEVEL
DROP LEVEL
CREATE COMPARTMENT
DROP COMPARTMENT
ALTER COMPARTMENT
CREATE GROUP
DROP GROUP
ALTER GROUP
ALTER GROUP PARENT
CREATE LABEL
DROP LABEL
ALTER LABEL
REMOVE TABLE POLICY
APPLY TABLE POLICY
USER SET LEVELS
USER SET COMPARTMENTS
USER SET GROUPS
USER SET PRIVS
USER REMOVE POLICY
SESSION LABEL
SESSION ROW LABEL
RESTORE DEFAULT LABELS
SAVE DEFAULT LABELS
SET TRX ISOLATION
SET TRX READ WRITE
CREATE PACKAGE
DROP PACKAGE
CREATE PACKAGE BODY
DROP PACKAGE BODY
CREATE SYNONYM
DROP SYNONYM
INSERT
SELECT
DELETE
UPDATE
EXECUTE
EXECUTE TRIGGER
MERGE INTO
LOCK TABLE
UNLOCK USER
ALTER DATABASE
SAVEPOINT
COMMIT
ROLLBACK
CONNECT
DISCONNECT
EXPLAIN
STARTUP
SHUTDOWN

USERNAME 用户名,没有指定或'NULL'表示所有用户

SCHNAME 模式名,没有时指定为'NULL'

OBJNAME 对象名,没有时指定为'NULL'

WHENEVER 审计时机,取值ALL/SUCCESSFUL/FAIL

ALLOW_IP IP列表,以’,’隔开。例如'"192.168.0.1","127.0.0.1"'

ALLOW_DT 时间串,格式如下:

ALLOW_DT::= <时间段项>{,<时间段项>}
<时间段项> ::= <具体时间段> | <规则时间段>
<具体时间段> ::= <具体日期><具体时间> TO <具体日期><具体时间>
<规则时间段> ::= <规则时间标志><具体时间> TO<规则时间标志><具体时间>
<规则时间标志> ::= MON | TUE | WED | THURS | FRI | SAT | SUN

INTERVAL 时间间隔,单位为分钟

TIMES 次数

例1,创建一个审计实时侵害检测规则DANGEROUS_SESSION,该规则检测每个星期一8:00至9:00的所有非本地SYSDBA的登录动作。

SP_CREATE_AUDIT_RULE ('DANGEROUS_SESSION','CONNECT', 'SYSDBA', 'NULL', 'NULL', 'ALL', '"127.0.0.1"','MON "8:00:00" TO MON "9:00:00"',0, 0);

例2,创建一个审计实时侵害检测规则PWD_CRACK,该规则检测可能的口令暴力破解行为。

SP_CREATE_AUDIT_RULE ('PWD_CRACK','CONNECT', 'NULL', 'NULL', 'NULL', 'FAIL', 'NULL','NULL',1, 50);

当不再需要某个实时侵害检测规则时,可使用下面的系统过程进行删除。

VOID
SP_DROP_AUDIT_RULE(
	RULENAME VARCHAR(128)
);

参数说明:

RULENAME 待删除的审计实时侵害检测规则名

例如,删除已创建的实时侵害检测规则DANGEROUS_SESSION。

SP_DROP_AUDIT_RULE ('DANGEROUS_SESSION');

5.5.2 实时侵害检测

当执行SP_SET_ENABLE_AUDIT (2);时,实时侵害检测系统会实时分析用户的操作,将其与系统中创建的实时侵害检测规则进行匹配,判断该用户操作是否是侵害行为。

为了界定不同侵害行为对系统的危害情况,实时侵害检测系统定义了四种级别的侵害等级,从四级到一级侵害行为严重程度递增。这样根据用户操作匹配的实时侵害检测规则来可以判断其属于哪一级的侵害行为。

四种侵害等级如下:

  • 四级:操作只违反了IP或者时间段设置之一,且对应累计次数在规定时间间隔内没有达到门限值,或者没有门限值设置;
  • 三级:操作同时违反了IP和时间段设置,且累计次数在规定时间间隔内没有达到门限值,或者没有门限值设置;
  • 二级:操作的IP和时间段都正常,且累计次数在规定时间间隔内达到了门限值;
  • 一级:操作只违反了IP或时间段设置之一,且对应累计次数在规定时间间隔内达到了门限值,或者操作同时违反了IP和时间段设置,且累计次数在规定时间间隔内达到了门限值。

实时侵害检测规则的设置,使得某些操作可能会触发多条审计分析规则,也就是说可能存在多条审计分析规则同时匹配的情况。在这种情况下,需要把操作记录保存到所有匹配的、同时规定了操作频率门限值的审计分析规则下,并且使用这些审计分析规则对该操作进行分析,从所有满足的侵害等级中选择一个最高的侵害等级进行响应。

DM实时侵害检测系统根据侵害检测结果做出相应的安全审计响应,由低到高四个等级分别为:

  • 四级响应:实时报警生成,对四级侵害行为进行响应。当系统检测到四级侵害行为时,生成报警信息;
  • 三级响应:违例进程终止,对三级侵害行为进行响应。当系统检测到三级侵害行为时,终止当前操作(用户当前连接仍然保持)。同时生成报警信息;
  • 二级响应:服务取消,对二级侵害行为进行响应。当系统检测到二级侵害行为时,强制断开用户当前连接,退出登录。同时生成报警信息;
  • 一级响应:账号锁定或失效,对一级侵害行为进行响应。当系统检测到一级侵害行为时,强制断开用户当前连接,退出登录,并且锁定账号或使账号失效。同时生成报警信息。

这些安全审计相应动作中除了生成报警信息,其余的都由DM数据库服务器即可完成。生成报警信息的实现包括DM数据库服务器将报警信息写入一个专门的日志文件,由DM的审计告警工具dmamon实时分析这个日志文件,发现报警信息并将报警信息以邮件的形式发送给指定的邮箱。

5.5.3 审计告警工具dmamon

审计告警工具dmamon用来在DM实时侵害检测系统检测到侵害事件且需要进行报警时可将报警信息以邮件的形式发送给指定邮箱。

dmamon的运行需要指定对应的配置文件dmamon.ini,此配置文件只能通过工具dmamon_ctl进行创建或修改。

5.5.3.1 创建或修改dmamon.ini

使用dmamon_ctl工具创建或修改dmamon.ini。

启动dmamon_ctl工具的命令格式为:

dmamon_ctl [FILE =value]
或
dmamon_ctl [FILE =value] DCR_INI= value

参数说明:

FILE:用来指定需要编辑的dmamon.ini的路径。创建dmamon.ini时,可以不指定FILE参数。

DCR_INI:在ASM环境中,用来指定dmdcr.ini路径。非ASM环境不用指定。

例如:

dmamon_ctl FILE=c:\dmamon.ini

当需要创建dmamon.ini时,可以不指定FILE参数,则dmamon_ctl工具会一步步引导用户配置dm.ini所在目录、发送和接收邮件的电子邮箱等信息,创建一个新的dmamon.ini文件。配置项如下表所示。

表5.6 dmamon.ini配置项
项目 项目意义 字段 字段意义
[PATH] 实时审计警报记录文件所在的文件目录 PATH 实时审计警报记录文件所在的文件目录
[SENDER] 发件人 EMAIL 发件人邮箱
SMTP 发件人邮箱SMTP服务器
USERNAME 发件人用户名
PASSWORD 发件人密码
[RECEIVER] 收件人 EMAIL 收件人邮箱
[INTERVAL] 时间间隔 INTERVAL 检查审计警报记录文件的时间间隔,单位秒

dmamon_ctl工具支持的命令如下表。

表5.7 dmamon_ctl命令
命令 说明
EDIT 修改INI文件信息
ADD 增加接收者的邮件地址信息
REMOVE 删除接收者的邮件地址信息
SHOW 显示当前控制文件的内容
SAVE 保存,保存路径必须为dmamon.ini的绝对路径。退出之前须保存,否则修改无效
EXIT 退出当前程序
HELP 显示帮助信息

5.5.3.2 使用dmamon

配置好dmamon.ini后,就可以使用dmamon工具进行实时审计告警了。启动dmamon工具的命令格式为:

dmamon  PATH=<dmamon.ini路径>   USERID=<userid>
或
dmamon  PATH=<dmamon.ini路径>  USERID=<userid>  dcr_ini=<dmdcr.ini路径>
<userid>::=<username>/<password>[@<connect_identifier>][<option>] 
<connect_identifier> ::=<svc_name> | {<host>[:<port>]} | <unixsocket_file>
<option>::= ##{ <exetend_option>=<value>{,<extend_option>=<value>} }  --此行外层{}是为了封装参数之用,书写时需要保留
<os_auth>::= AS {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}

参数说明:

PATH:指定dmamon.ini文件的路径,字符串类型。

USERID:指定登录数据库的信息。

*<username>/<*password>:指定用户名和密码,仅支持具有审计权限的用户使用dmamon工具。

<svc_name>:服务名。

*<host>[:<*port>]:服务器IP地址和端口号。缺省情况下默认为本地服务器和端口号LOCALHOST:5236。当服务器为本机时,SERVER:PORT可直接写LOCALHOST。当连接其他服务器时,SERVER:PORT需写上IP地址和PORTNUM,例如:192.168.0.248:8888。

<unixsocket_file>:专门用于在LINUX系统中,当服务器与客户端之间使用UNIXSOCETUNIX-IPC方式通信时,指定客户端连接的UNIXSOCKET路径文件名。必须和inet_type=UNIXSOCKET同时使用。例如:

./dmamon PATH=/home/dmamon.ini USERID=SYSAUDITOR/SYSAUDITOR@/home/test/foo.sock#{inet_type=UNIXSOCKET} 

*<option>为扩展选项,用法为<exetend_option>=<*value>。所有value值不能包含空格,不能包含特殊的符号,如引号等。书写扩展选项时需要用引号##"{ }"进行封装,例如:##"{INET_TYPE=tcp,mpp_type=local}"。

现支持的扩展选项如下:

extend_option value
mpp_type MPP登录属性,此属性的设置对非MPP系统没有影响。取值GLOBAL和LOCAL,默认为GLOBAL。GLOBAL表示MPP环境下建立的会话为全局会话,对数据库的导入导出操作在所有节点进行;LOCAL表示MPP环境下建立的会话为本地会话,对数据库的导入导出操作只在本地节点进行
inet_type 网络通信协议类型。取值UDP/TCP/IPC/RDMA/UNIXSOCKET,分别对应UDP协议、TCP协议、IPC(共享内存)、RDMA(远程直接内存访问)、UNIXSOCKET(unix domain socket - IPC)协议。缺省为TCP
ssl_path 通信加密的SSL数字证书路径,缺省为不使用加密。数字证书路径由用户自己创建,将相应的证书需放入该文件夹中。其中服务器证书必须与 dmserver 目录同级,客户端目录可以任意设置。和ssl_pwd一起使用。
各用户只能使用自己的SSL数字证书,例如SYSAUDITOR账户只能使用/home/dmdbms/bin/client_ssl/SYSAUDITOR下的证书和密码,如果证书没有密码可以用缺省或任意数字代替。
例如:./dmamon PATH=/home/dmamon.ini USERID=SYSAUDITOR/SYSAUDITOR@192.168.1.64:5236#"{ssl_path= /home/dmdbms/bin/client_ssl/SYSAUDITOR,ssl_pwd=12345}"
ssl_pwd 通信加密的SSL数字证书密码。和ssl_path一起使用。缺省为不加密

DCR_INI:在ASM环境,用来指定dmdcr.ini路径。非ASM环境不用指定。

5.6 审计分析

DM提供了图形界面的审计分析工具Analyzer以及通过命令行启动的审计分析工具dmaudtool。

Analyzer实现对审计记录的分析功能,能够根据所制定的分析规则,对审计记录进行分析,判断系统中是否存在对系统安全构成危险的活动。只有审计用户才能使用审计分析工具Analyzer。

dmaudtool实现对审计记录的解析、筛选以及导出功能。审计文件的内容是不可视的,dmaudtool可解析审计文件中的审计记录并导出至指定输出文件当中以供用户查看。同时dmaudtool也提供筛选功能,可以针对审计记录中的用户名、模式名、对象名或者操作时间有选择性地筛选导出。审计分析工具dmaudtool的使用对用户无限制。

下面将详细介绍审计分析工具Analyzer和dmaudtool的使用方法。

5.6.1 审计分析工具Analyzer

审计用户登录审计分析工具后,通过Analyzer可以创建和删除审计规则,并可以指定对某些审计文件应用某些规则。并将审计结果以表格的方式展现出来。

审计用户登录Analyzer后可看到工具主界面如图5.2所示。

Analyzer工具主界面

图5.2 Analyzer工具主界面

5.6.1.1 审计规则

右键单击导航树中的“审计规则”节点,在弹出的菜单中选择“新建审计分析规则”,可打开如下图所示的新建审计分析规则窗口。

新建审计分析规则窗口

图5.3 新建审计分析规则窗口

如上图中创建了一个名为aud_sysdba的审计分析规则,对SYSDBA的所有审计记录进行分析。之后我们就可以将这个审计分析规则应用于对审计记录文件的分析。右键点击“审计规则”或一个具体的审计分析规则节点,在弹出的菜单中选择“审计规则分析”,弹出如下图所示审计规则分析窗口。

审计规则分析窗口

图5.4 审计规则分析窗口

选择需要应用的审计分析规则,可以同时选择多条,在下面的文件列表中添加需要进行分析的审计记录文件,Analyzer工具就会根据审计分析规则对文件中的审计记录进行分析,将满足规则的审计记录以表格的形式显示出来,如下图所示。

审计规则分析结果

图5.5 审计规则分析结果

在审计规则分析结果显示窗口中,还可以对显示的审计记录根据需要进行进一步过滤,进一步分析出需要的审计记录。

5.6.1.2 审计日志查看器

双击“审计日志查看器”节点,可打开如下图所示的条件设置窗口。

审计日志查看条件设置窗口

图5.6 审计日志查看条件设置窗口

添加需要查看的审计记录文件,还可在窗口左侧的“选择项”中设置各种过滤条件,之后点击“确定”,将满足规则的审计记录以表格的形式显示出来,与图5.5的显示相同。

5.6.2 审计分析工具dmaudtool

审计信息以审计记录的形式存放在DM数据库审计文件中。审计文件的内容是不可视的,审计分析工具dmaudtool可以筛选解析审计文件中的审计记录并且导出至指定输出文件当中以供用户查看。审计分析工具dmaudtool的使用对用户无限制。

5.6.2.1 使用dmaudtool工具

dmaudtool工具需要从命令行启动。用户需要在cmd命令行工具中找到DM安装目录的bin文件夹/dmdbms/bin,输入dmaudtool和参数后回车。参数在下一节详细介绍。

语法如下:

dmaudtool PARAMETER=<value> { PARAMETER=<value> }

PARAMETER:dmaudtool参数。多个参数之间排列顺序无影响,参数之间使用空格间隔。

<value>:参数取值。

例如:分析用户名为SYSDBA,密码为123456789,IP地址为192.168.1.60,端口号为5236的数据库的审计文件,并将分析结果输出保存。审计文件所在路径为E:\dmdbms\data\DAMENG。分析结果输出路径为E:\dmdbms\data\DAMENG\out\aud_out.txt,若已经存在,则报错。行间隔符设为AAAA,输出文件大小不限。

分析本地磁盘上的审计文件时,要求dmaudtool与审计文件在同一台主机上。命令行操作如下:

dmaudtool userid=SYSDBA/123456789@192.168.1.60:5236 afil_path=E:\dmdbms\data\DAMENG out_path=E:\dmdbms\data\DAMENG\out\aud_out R_SEP=AAAA

显示如下:

使用dmaudtool工具示例

图5.7 使用dmaudtool工具示例

存在同名文件时会报错:

分析审计记录时存在同名文件

图5.8 分析审计记录时存在同名文件

5.6.2.2 dmaudtool参数一览表

本节提供dmaudtool的参数一览表,供用户快速参考。

表5.8 dmaudtool参数一览表
<table>
<tr>
	<td><b>参数</b></td>
	<td><b>含义</b></td>
	<td><b>备注</b></td>
</tr>
<tr>
	<td>USERID</td>
    <td>用户名和口令。  USERID=<userid> <br><userid>::={{<username>[/<password>]}  | /}[@<connect_identifier>][<option>] [<os_auth>]  <br/><connect_identifier> ::=<svc_name> | {<host>[:<port>]}  | <unixsocket_file>  <br><option>::= ##{  <exetend_option>=<value>{,<extend_option>=<value>}  } --此行外层{}是为了封装参数之用,书写时需要保留 <br>  <os_auth>::= AS  {SYSDBA|SYSSSO|SYSAUDITOR|USERS|AUTO}  <br/>更详细的USERID参数介绍请参考dmamon工具  
</td>
	<td>必选。仅支持本地连接</td>
</tr>
<tr>
	<td>AFIL_PATH</td>
	<td>指定审计文件所在的路径</td>
	<td>必选</td>
</tr>
<tr>
	<td>OUT_PATH</td>
	<td>指定审计分析结果的输出文件完整路径</td>
	<td>必选。与OUT_SIZE配合使用,若文件大小超过OUT_SIZE指定值,则会在目录下生成同名+序号的新输出文件</td>
</tr>
<tr>
	<td>OUT_SIZE</td>
	<td>指定审计分析结果输出文件的大小,单位为兆(M)。指定范围为500~65534(M)</td>
	<td>可选。缺省为0,表示不限制文件大小</td>
</tr>
<tr>
	<td>DCR_INI</td>
	<td>DCR_INI路径,分析存储在ASM上的审计文件时指定</td>
	<td>分析存储在ASM上的审计文件时必选,否则可选,此时系统将不考虑该参数值</td>
</tr>
<tr>
	<td>USERNAME</td>
	<td>对应审计记录中的用户名,表示收集该用户名的审计记录</td>
	<td rowspan="5">可选。若未指定则不考虑该参数值,若均未指定则默认分析指定目录下所有审计文件</td>
</tr>
<tr>
	<td>SCHNAME</td>
	<td>对应审计记录中模式名,表示收集该模式名的审计记录</td>
</tr>
<tr>
	<td>OBJNAME</td>
	<td>对应审计记录中对象名,表示收集该对象名的审计记录</td>
</tr>
<tr>
	<td>TIME_FROM </td>
	<td>对应审计记录中操作时间,用于指定收集审计记录的起始时间</td>
</tr>
<tr>
	<td>TIME_TO</td>
	<td>对应审计记录中操作时间,用于指定收集审计记录的结束时间</td>
</tr>
<tr>
	<td>R_SEP</td>
	<td>指定输出文件中的行分隔符,用于间隔输出文件中行与行之间的数据</td>
	<td>可选。缺省为回车符。考虑到记录中可能存在的字符,间隔符需要设置相对复杂,避免解析出错</td>
</tr>
<tr>
	<td>C_SEP</td>
	<td>指定输出文件中的列分割符,用于间隔输出文件中列与列之间的数据</td>
	<td>可选。缺省为‘|’</td>
</tr>
<tr>
	<td>HELP</td>
	<td>打印帮助信息</td>
	<td>可选</td>
</tr>
</table>

5.6.2.3 dmaudtool工具使用示例

5.6.2.3.1 帮助HELP

输入dmaudtool help即可查看帮助信息。帮助信息中会显示dmaudtool版本信息以及所有参数的大致信息,供用户快速参考。

命令行操作如下:

dmaudtool HELP

显示如下:

使用dmaudtool的help命令

图5.9 使用dmaudtool的help命令

5.6.2.3.2 分析指定目录下所有审计文件

分析用户名为SYSDBA,密码为123456789,IP地址为192.168.1.60,端口号为5236的数据库的审计文件,并将分析结果输出保存。审计文件所在路径为E:\dmdbms\data\DAMENG,分析结果输出路径为E:\dmdbms\data\DAMENG\out\aud_out.txt,行间隔符设为AAAA,输出文件大小不限。

命令行操作如下:

dmaudtool USERID=SYSDBA/123456789@192.168.1.60:5236 AFIL_PATH=E:\dmdbms\data\DAMENG OUT_PATH=E:\dmdbms\data\DAMENG\out\aud_out.txt R_SEP=AAAA

显示如下:

分析指定目录下所有审计文件

图5.10 分析指定目录下所有审计文件

5.6.2.3.3 分析用户名为SYSDBA的审计记录

命令行操作如下:

dmaudtool USERID=SYSDBA/123456789@192.168.1.60:5236 AFIL_PATH=E:\dmdbms\data\DAMENG OUT_PATH=E:\dmdbms\data\DAMENG\out\aud_out.txt R_SEP=AAAA USERNAME=SYSDBA

显示如下:

分析用户名为SYSDBA的审计记录

图5.11 分析用户名为SYSDBA的审计记录

5.6.2.3.4 分析指定时间之后的审计文件

命令行操作如下:

dmaudtool USERID=SYSDBA/123456789@192.168.1.60:5236 AFIL_PATH=E:\dmdbms\data\DAMENG OUT_PATH=E:\dmdbms\data\DAMENG\out\aud_out.txt R_SEP=AAAA TIME_FROM=”2020/9/1 21:00:00”

显示如下:

分析指定时间之后的审计文件

图5.12 分析指定时间之后的审计文件

5.6.2.3.5 分析存储在ASM上的审计文件

分析用户名为SYSDBA,密码为SYSDBA,IP地址为192.168.100.121,端口号为5425的数据库节点的审计文件,并将分析结果输出保存。审计文件所在路径为+DMDATA/home/data/yy/GRP7_DB,分析结果输出路径为/home/test/yy/out/aud_out.txt,dmdcr.ini配置文件的路径为/home/data/yy/DSC01/dmdcr.ini(分析存储在ASM上的审计文件时需指定dmdcr.ini配置文件的路径,即配置参数DCR_INI),行间隔符设为AAAA,输出文件大小不限。

分析存储在ASM上的审计文件时无需考虑审计分析工具是否与ASM服务器在同一台主机上。

命令行操作如下:

./dmaudtool USERID=SYSDBA/SYSDBA@192.168.100.121:5425 AFIL_PATH=+DMDATA/home/data/yy OUT_PATH=/home/test/yy/out/aud_out.txt DCR_INI=/home/data/yy/DSC01/dmdcr.ini R_SEP=AAAA

显示如下:

分析存储在ASM上的审计文件

图5.13 分析存储在ASM上的审计文件

5.6.2.4 审计分析结果导入到目标库中

将审计分析结果导入到目标库中需要利用DM自带的导入导出工具dmfldr。将dmaudtool的分析结果输出文件作为dmfldr的输入文件,并配置与dmaudtool分隔符相匹配的控制文件即可完成导入工作。dmaudtool按照动态视图V$AUDITRECORDS的行列顺序输出审计结果,因此需要在目标库中创建一个与动态视图V$AUDITRECORDS结构一样的目标表,用以存放审计记录。操作步骤如下:

  1. 在目标库中创建一个与动态视图V$AUDITRECORDS结构相同的目标表;

SQL语句如下:

CREATE TABLE aud_test

(

"USERID" INTEGER,

"USERNAME" VARCHAR(128),

"ROLEID" INTEGER,

"ROLENAME" VARCHAR(128),

"IP" VARCHAR(64),

"SCHID" INTEGER,

"SCHNAME" VARCHAR(128),

"OBJID" INTEGER,

"OBJNAME" VARCHAR(128),

"OPERATION" VARCHAR(128) NOT NULL,

"SUCC_FLAG" CHAR(1) NOT NULL,

"SQL_TEXT" VARCHAR(8188),

"DESCRIBTION" VARCHAR(8188),

"OPTIME" DATETIME(6) NOT NULL,

"MAC" VARCHAR(25),

"SEQNO" BYTE

);
  1. 创建控制文件out.ctrl,并存放到e:\dmdbms\data\DAMENG目录下;

out.ctrl中内容如下:

LOAD DATA

INFILE 'E:\dmdbms\data\DAMENG\out\aud_out.txt' STR 'AAAA'

INTO TABLE aud_test

FIELDS '|'

(

"USERID",

"USERNAME",

"ROLEID",

"ROLENAME",

"IP",

"SCHID",

"SCHNAME",

"OBJID",

"OBJNAME",

"OPERATION",

"SUCC_FLAG",

"SQL_TEXT",

"DESCRIBTION",

"OPTIME",

"MAC",

"SEQNO"

)
  1. 打开命令行窗口,进入DM安装目录的bin目录,运行dmfldr,将分析结果导入到目标表中。

命令行操作如下:

dmfldr userid=SYSDBA/123456789@192.168.1.60:5236 control='e:\dmdbms\data\DAMENG\out.ctrl'

显示如下:

将审计分析结果导入到目标库中

图5.14 将审计分析结果导入到目标库中
注意

审计记录中可能存在过长的执行语句,所以在导入目标表时可能出现“记录超长”的错误,可以使用新库作为目标库,初始化数据库时调大建库参数page_size。例如,存在一个执行语句长度为3900字节,可以设置page_size=32。

微信扫码
分享文档
扫一扫
联系客服